MongoDB cursor.count()
的{{1}}和cursor.size()
方法之间有什么区别?
答案 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
方法确实有不良的附带效果。
我希望这对其他人有帮助,因为找到我们所面临的问题的根源并不容易。