2013-10-11 2 views
1

MongoDB를 사용하여 채팅 응용 프로그램을 만들고 있습니다. 기본적으로 최신 채팅 메시지 20 개를 검색 한 다음 오름차순으로 표시해야합니다. 마지막 채팅 메시지 20 개를 얻으려면 내 코드는 다음과 같습니다.정렬, 제한을 사용한 다음 MongoDB에서 다시 정렬

db.messages.find().sort({$date:-1}).limit(20) 

메시지가 역순으로 남습니다.

단일 쿼리에서이 작업을 수행 할 수있는 방법이 있습니까? 나는 이것이 정확하지 않다는 것을 알고 있지만 db.messages.find().sort({$date:-1}).limit(20).sort({$date:1})과 같은가?

답변

1

sort 및 limit 명령은 실제로 mongod 서버로 보내지는 쿼리에 대한 수정이므로 하나의 쿼리 명령에 두 가지 정렬을 쉽게 첨부 할 수있는 방법이 없습니다. 당신은 집계 프레임 워크를 사용하여 MongoDB에서이 작업을 수행 할 수 있지만,이 경우 좋은 같은 작은 유스 케이스에 대한 솔루션 ...

되지 않을 것, 가장 좋은 건 그냥 결과를 반대로 아마 귀하의 응용 프로그램 코드. 사실, mongodb는 클라이언트가 이러한 종류의 데이터 조작을 대부분 처리해야한다는 생각으로 설계되었습니다. 어떤 언어를 사용하고 있는지 잘 모르겠지만 배열을 뒤집거나 목록을 거꾸로 반복하는 방법이 있습니다. 여기서는 잘 작동합니다.