What is the difference between the cursor.count()
and cursor.size()
methods of MongoDB's DBCursor
?
问题:
回答1:
From the Javadoc of the MongoDB Java Driver, it says :
DBCursor.count(): Counts the number of objects matching the query. This does not take limit/skip into consideration.
DBCursor.size(): Counts the number of objects matching the query. This does take limit/skip into consideration.
回答2:
More than an answer I'd like to point out an issue that our team faced "mixing" this two.
We had something like this:
DBCursor cursor = collection.find(query).limit(batchSize);
logger.info("{} items found.", cursor.count());
while (cursor.hasNext()) {
...
}
It turned out that after calling the cursor.count()
method, the limit was ignored (plase take a look at this other question) , we intended to know how many items were returned by the query so we should have called the cursor.size()
method instead, since calling the count
one did have an undesired collateral effect.
I hope this could be helpful to anyone else since it was not that easy to find the source of the issue we were facing.