2017-10-30 3 views
0

서버 몽고 버전은 3.4.4입니다. Studio 3T로 연결되었습니다. 내가 mongodb에서 집계를 사용하여 데이터를 가져올 수 없습니다.

db.orders.aggregate([ 
    { $limit: 10 }, 
    { $skip: 10 } 
]) 

IntelliShell

이 같은 쿼리 할 때 나는 아무것도 반환되지 얻을. 나는 $ 제한을 전환 $ 때
그러나

db.orders.aggregate([ 
    { $skip: 10 }, 
    { $limit: 10 } 
]) 

그것은 잘 작동 건너 뜁니다. , $limit: 10가 '내가 10 개 결과를 원하는'의미 과 $skip는 '내가 처음 수십 필요하지 않습니다'의미

+0

글쎄, 네가 물어 보았다. * "10 개의 결과를 얻은 다음 그 중 10 개를 건너 뜁니다."*, 그래서 당신은 솔직하게 또 무엇을 기대합니까? 반면에 두 번째 문장은 "10 개의 결과를 건너 뛰고 그 다음 10 개의 값을 반환합니다"라고 말합니다. 따라서 의미 론적으로 구별 할 때 이들이 어떻게 다른지보기가 어렵지 않습니다. –

+0

시퀀스가 ​​내부적으로 어떻게 얻어지는지를 정확히 보여주는 [$ skip + $ limit Sequence Optimization] (https://docs.mongodb.com/manual/core/aggregation-pipeline-optimization/#skip-limit-sequence-optimization)도 참고하십시오. 귀하의 첫 번째 시도가 실패한 이유에 대한 직접적인 예가 나와 있습니다. 즉, 두 번째는'{$ limit : 20}, {$ skip : 10}'으로 최적화됩니다. –

+0

그러나 몽고 (mongodb)는 왜 그들을 같은 것으로 취급하지 않습니까? –

답변

1

이것은 나의 이해이다.
그래서 첫 번째 쿼리에서는 0 개의 결과가 표시되고 두 번째 쿼리에서는 10-20 개의 결과가 표시됩니다.

관련 문제