2012-08-09 13 views

答えて

29

Javadoc of the MongoDB Java Driverから、それは言う:

DBCursor.count():クエリに一致するオブジェクトの数をカウントします。この はではありません。が上限となります。

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

+0

どちらも同じようです...まだ2つのメソッドを導入したのはなぜですか?2つのパフォーマンスの違いはありますか? – Byter

+0

彼らは同じではありません。 1つは制限/スキップを考慮に入れるが、他のものは考慮しない。 –

+13

私はその違いが 'does not take'にあると思っていますし、' does take'はlimit/skipを考慮に入れています。 –

1

答え以上、私たちのチームがこの2つを「ミキシング」する問題を指摘したいと思います。

我々はこのようなものだった:それはcursor.count()メソッドを呼び出した後、制限が(plaseがthis他の質問を見てみましょう)を無視して、私たちはどのように多くの知っていることを意図していることが判明した

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

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

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

を項目がクエリによって返されたので、countを呼び出すと不要な付随効果が発生したので、代わりにcursor.size()メソッドを呼び出す必要がありました。

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

+0

'cursor.count()'は文書化されているように制限を無視するだけでなく、実際にカーソルから制限を取り除いたことを言っていますか? –

関連する問題