17

cursor.count()MongoDB のとcursor.size()メソッドの違いは何DBCursorですか?

4

3 に答える 3

32

MongoDB JavaドライバーのJavadocから、次のようになります。

DBCursor.count():クエリに一致するオブジェクトの数をカウントします。これは、制限/スキップを考慮していません。

DBCursor.size():クエリに一致するオブジェクトの数をカウントします。これは、制限/スキップを考慮に入れています。

于 2012-08-09T10:29:44.133 に答える
2

答え以上に、私たちのチームがこの 2 つの「混合」に直面した問題を指摘したいと思います。

次のようなものがありました。

DBCursor cursor = collection.find(query).limit(batchSize);

logger.info("{} items found.", cursor.count());

while (cursor.hasNext()) {
...
}

cursor.count()メソッドを呼び出した後、制限が無視されたことが判明しました(この他の質問を見てください)。クエリによって返されたアイテムの数を知るつもりだったので、cursor.size()代わりにメソッドを呼び出す必要がありましcountた。望ましくない付随効果があります。

私たちが直面していた問題の原因を見つけるのはそれほど簡単ではなかったので、これが他の人に役立つことを願っています.

于 2015-10-31T05:16:20.823 に答える