2012-03-23 15 views
13

私はMongoDBと対話するためにMongoid ruby​​ gemを使用しています。クエリから何かを取得しようとすると、1を使用すると予想されるときには$limit: -1(つまり負の値)が追加されます。私はコンソールで同じことをやろうとしましたが、返された文書は変更されませんでした。MongoDBのクエリでは、負の限界はどういう意味ですか?

負の値は何か特別な意味ですか?

答えて

8

"OP_QUERY" section of the "Mongo Wire Protocol" documentationの「numberToReturn」という見出しの下にマイナスの制限に関する注があります。

「(SQLのLIMIT キーワードのような)クライアントドライバが提供する 『制限』機能ならば、それは、文書の指定された数より これ以上は呼び出し元に返されないことを保証するために、クライアントドライバ次第です アプリケーション。numberToReturnが0の場合、dbはデフォルトの リターン・サイズを使用します。数値が負の場合、データベースは の数値を返してカーソルを閉じ、その結果は をフェッチできます。

カーソルと制限の詳細については、(今すぐ削除された"Execution of queries in batches"セクション)を参照してください。

+0

*数値が負の場合、データベースはその数値を返してカーソルを閉じる* - 何か醜いハック! –

5

限界値の符号は、その値が「ハード制限」か「ソフト制限」かを決定します。 「ハード・リミット」(負符号)照会は、できるだけ多くの文書を戻した後にカーソルをクローズします。 「ソフトリミット」は、レスポンスが制限で指定された数のドキュメントに収まらない場合に、カーソルを開いたままにします。

+2

これをバックアップするためのドキュメントはありますか?私はこれを前にして来なかった。 –

+0

また、ソフトリミットは正か負かですか? – nicholaides

+0

が答えを更新しました。これを参照して検索します。 – Yasser

関連する問題