MongoDB中cursor.count()和cursor.size()之间的区别

时间:2012-08-09 10:25:34

标签: java mongodb mongodb-java mongo-java

MongoDB cursor.count()的{​​{1}}和cursor.size()方法之间有什么区别?

2 个答案:

答案 0 :(得分:31)

来自Javadoc of the MongoDB Java Driver,它说:

  

DBCursor.count():计算与查询匹配的对象数。这个   考虑限制/跳过。

     

DBCursor.size():计算与查询匹配的对象数。这个   确实考虑了限制/跳过。

答案 1 :(得分:2)

不仅仅是一个答案,我想指出一个我们团队面临的问题"混合"这两个。

我们有这样的事情:

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

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

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

事实证明,在调用cursor.count()方法后,限制被忽略(请看this其他问题),我们打算知道有多少项由查询返回,所以我们应该调用cursor.size()方法,因为调用count方法确实有不良的附带效果。

我希望这对其他人有帮助,因为找到我们所面临的问题的根源并不容易。