PHP와 MongoDB를 사용하여 webapp를 개발 중입니다. 이 응용 프로그램에서는 두 개의 모음을 유지합니다. 하나는 파일에 대한 데이터를 보관하고 하나는 각 파일에 대한 다운로드 이벤트를 추적합니다.MongoDB에서 위조 된 가입 방법?
최근 다운로드 한 파일이 10 개 필요하지만 조인은 옵션이 아닙니다. 이벤트 문서는 파일 ID 만 저장하고 다른 컬렉션은 축소판을 저장합니다.
바로 지금 내가 최근에 다운로드 한 10 개의 파일을 가져 와서 날짜순으로 정렬하지만 순서는 괜찮습니다.하지만이 파일 배열 (ID)을 사용하고 id가있는 파일을 찾는 where_in 쿼리를 만듭니다 ids 배열에. 이 또한 잘 작동합니다 (선택한 파일의 축소판을 가져옵니다)하지만 더 이상 주문을 유지할 수 없습니다. 가장 최근에 다운로드 한 파일이 맨 위에 없습니다.
어떻게해야 하나의 ID 대신 10 개의 새 쿼리를 만들 수 있습니까? 의
- 받기 모든 ID를 :
내가 이상 40.000 문서 :이 짧은에서
UPDATE
을 가지고 있기 때문에 스키마를 변경할 수 없습니다 내가하고 싶은 것입니다 최근에 다운로드 한 파일 10 개. 다운로드 타임 스탬프로 정렬됩니다.
- 이 ID 배열을 사용하여 파일 컬렉션에 대한 쿼리를 만들고 각 파일의 세부 정보 (미리보기 이미지, 설명 등)를 가져옵니다.
위의 단계는 정상적으로 작동하지만 첫 번째 단계부터는 주문을 보관할 수 없으므로 가장 최근에 다운로드 한 파일을 맨 위에 가져올 수 없습니다. id 배열을 시험해보고 각 파일에 대한 데이터를 얻을 수 있지만 그 대신에 10 개의 쿼리가 필요하다는 것을 알고 있습니다.
하지만 루프의 각 턴마다 데이터베이스에 쿼리를해야합니까? 나는 MongoDB가 하나의 쿼리만을 만드는 배열로 쿼리를 지원하기 때문에이를 피하려고한다. –
내 질문을 업데이트했습니다. 희망적으로 지금은 훨씬 더 명확 해집니다. @sergio tulentsev. –
모든 파일에 대한 정보를 얻은 후에는'events' 배열에서 순서를 사용하여 최종 결과를 만듭니다. –