2012-08-16 7 views
6

limit演算子の負の値はどういう意味ですか?私はlimit(1)またはlimit(-1)を行うときMongoDB "limit"演算子負の値

http://www.mongodb.org/display/DOCS/Aggregation+Framework+-+ $

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

モンゴを制限するには、まったく同じドキュメントを返します?

+0

それは私に聞こえるモンゴは、あなたが入力した限界値の絶対値を取っているよう。負の限界が意味をなさないので、どちらが良いですか。 –

+0

[MongoDBのクエリでは、負の限界はどういう意味ですか?](http://stackoverflow.com/questions/9833941/in-a-mongodb-query-what-does-a-negative-limit-mean ) –

答えて

14

制限数が負の場合、データベースは通常、その数の結果を返してカーソルを閉じます。本質的に1つのバッチの結果が返され、それ以上の結果はフェッチできません。

一般的でないケースとして、負の限界値がbatch size(特に最大バッチサイズ)を超えると、制限に達しているかどうかにかかわらずバッチが返され、カーソルが閉じられます。したがって、制限が高すぎる場合、単一バッチルールは指定された制限よりも優先されます。

制限が正の場合は、カーソルを開いたままにしてさらに結果を受け取り、カーソルがなくなるまで繰り返し続けることができます。

バッチとカーソルの詳細については、こちらを見てみましょう:

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

+1

ありがとう、もう一つのオプションは他よりも効率的ですか? – kapso

+2

この数の結果を正確に取得している場合、上限は1より大きく、バッチサイズの制限を超えています(デフォルトは101ですが調整可能です - 私の回答とバッチセクションのリンクを参照)。負の限界が有益かもしれない。それ以外の場合は、マイナス限度の使用に問題が生じる可能性があります。データセットでテストすることは常にそうです。 –