2012-08-16 36 views
6

運營商limit負值是什麼意思?MongoDB「限制」運營商負值

http://www.mongodb.org/display/DOCS/Aggregation+Framework+-+,當我做limit(1)limit(-1) $限制

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Blimit%28%29%7D%7D

蒙戈返回完全相同的文件?

+0

這聽起來好像蒙戈正在輸入的限制的絕對值。這是好事,因爲負面限制是沒有意義的。 – 2012-08-16 18:36:56

+0

可能的重複[在MongoDB查詢中,什麼是否定限制?](http://stackoverflow.com/questions/9833941/in-a-mongodb-query-what-does-a-negative-limit-mean ) – 2014-03-02 03:38:27

回答

14

如果限制數是負數,那麼通常數據庫將返回該數量的結果並關閉遊標 - 基本上會返回一批結果,並且不會獲取該查詢的更多結果。

對於不太常見的情況,如果負極限值超過batch size(特別是最大批量大小),那麼無論是否達到極限,該批次都將返回並關閉遊標。因此,如果限制太高,單個批次規則將超過指定的限制。

如果限制是肯定的,您可以保持光標打開以接收更多結果並繼續迭代,直到光標耗盡。

更多關於批次和遊標,看看這裏:

http://docs.mongodb.org/manual/core/cursors/#cursor-batches http://docs.mongodb.org/manual/reference/method/cursor.limit/#negative-values

+1

謝謝,那麼一種選擇比另一種更有效嗎? – kapso 2012-08-16 21:35:10

+2

如果您正在檢索確切數量的結果,您的限制大於1,並且您處於批量限制(相信默認值爲101,但可調整 - 請參閱我的答案和批次部分中的鏈接),然後負面限制可能是有益的。否則,使用負極限可能會出現問題 - 與往常一樣,真正的方法是使用數據集進行測試。 – 2012-08-17 00:20:35