나는이 경우 같은 created_at 및 nb_likes 데이터와 MongoDB를에 요소의 목록을 가지고 고유 한 정수 값 없음의 분류에 이전/다음 요소를 것은 :가
[{'_id':'1234', 'nb_likes':1, 'created_at':'2010-08-01'},
{'_id':'1235', 'nb_likes':2, 'created_at':'2010-08-02'},
{'_id':'1236', 'nb_likes':2, 'created_at':'2010-08-03'},
{'_id':'1237', 'nb_likes':3, 'created_at':'2010-08-02'},
{'_id':'1238', 'nb_likes':3, 'created_at':'2010-08-03'}]
나는하여이 컬렉션을 정렬 할 경우 'nb_likes'명령.
db.users.find().sort(['nb_likes':-1])
는하지만 난 'nb_likes'에 의해 주문하는 경우 '1236'문서의 이전 및 다음 요소를 발견 할 수 있습니다. 컬렉션을 보면 이전 요소는 문서 '1235'이고 다음은 '1237'입니다. 이전 및 다음 요소를 알고 요청을 원한다면, 내가 할 :
이
db.users.find({'nb_likes':{'$gt':2}}).sort(['nb_likes':-1])
db.users.find({'nb_likes':{'$lt':2}}).sort(['nb_likes':1])
다음 얻기 위해 이전 얻을 그러나이 경우에 할 수 있습니다. 나는
db.users.find({'nb_likes':{'$gte':2}}).sort(['nb_likes':-1])
다음
db.users.find({'nb_likes':{'$lte':2}}).sort(['nb_likes':1])
를 얻을 그러나이 경우에
이전 얻을 그래서 나는이 문서를 가지고 '$ GTE'를 사용 2.와 nb_likes 모든 문서를 건너 뜁니다. 두 번째 요소는 항상 반환됩니다. 다음 및 이전 요소에서.
은 내가 더 'nb_likes'일부 문서 만 오래된 'created_at'
그래서 내가해야 할 일을 요청 알 수 삭제 내 문서보다 적은 이상 'created_at'만 문서를 제한하는 경우 좋은 결과를 얻으려고.
좋은 해결책은 내 목록에이 문서의 위치를 가지고 있고 skip()
및 limit(1)
나는 모든 좋은 해결책 열어주는 말들하는 것입니다. SQL에서 동일한 문제가 발생하는지 여부는 알 수 없습니다.
ID 1235와 요소 요소 1236 '전에'왜? –
기본적으로 두 번째 정렬은 about_ created_at입니다. sort ([ 'nb_likes': - 1], [ 'created_at': 1])'로 정렬 할 수 있습니다. 두 요소의 순서가 같을 때 기본적으로 수행합니다. – shingara
무엇입니까? Mongo 질의는 예제로 제공 한 정렬 된 목록을 가져옵니다. nb_likes가 2보다 크고 id가 document_id보다 작은 경우 –