奇妙な問題: dbcursor.count() を出力します。これは、db.collectionName.count() を使用して、mongo シェルから取得したものと同じ数を生成します。
しかし、私がこのようにすると、
DBCursor cursor = myCollection.find(someQuery);
int count = cursor.count();
int cnt = 0;
while (cursor.hasNext()) {
cnt++;
DBObject dbObject = (DBObject) cursor.next();
}
その後、count と cnt は競合の結果を示します。前者は期待どおりですが、後者は前者よりもはるかに少ないです。
次に、mongodb DBCursor API doc を確認しました。 http://api.mongodb.org/java/2.0/com/mongodb/DBCursor.html
そして count() と hasNext() の文言から
public int count()
throws MongoException
Counts the number of elements in this cursor.
Returns:
the number of elements
と
public boolean hasNext()
Checks if there is another element.
Returns:
if there is another element
これは、count と cnt が同じであることを意味します。記録のために、プロセス中にmongodbには挿入も削除操作もありません(テストのためにミラーdbでテストしました)
何か案が?