我有这个查询
DBCursor mongoCursor = mongoCollection.find(query).sort(sort).limit(5000);
long mongoCursorCount = mongoCursor.count();
myLogger.info("mongoCursorCount " + mongoCursorCount);
显示mongoCursorCount值为1.2M docs
限制方法适用于shell查询,但它是否可以通过mongo-java-driver-2.1.1.jar驱动程序工作?
答案 0 :(得分:5)
默认情况下,MongoDB在与limit
一起应用时会忽略skip
和count
。要更改此行为,您需要将applySkipLimit
设置为true
。有关详细信息,请参阅here。
在Mongo shell中,默认情况下会忽略limit
和skip
:
db.coll.find().limit(3).count();
这将尊重这些修饰语:
db.coll.find().limit(3).count(true);
你可能正在使用旧版本的Mongo shell,这不是默认版本或类似的东西。
要修复Java代码,请使用size()
代替count()
- 这就像在shell中调用count(true)
而不是count()
一样。