Mongo Java驱动程序不遵守限制方法

时间:2014-01-17 19:00:00

标签: java mongodb

我有这个查询

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驱动程序工作?

1 个答案:

答案 0 :(得分:5)

默认情况下,MongoDB在与limit一起应用时会忽略skipcount。要更改此行为,您需要将applySkipLimit设置为true。有关详细信息,请参阅here

在Mongo shell中,默认情况下会忽略limitskip

db.coll.find().limit(3).count();

这将尊重这些修饰语:

db.coll.find().limit(3).count(true);

你可能正在使用旧版本的Mongo shell,这不是默认版本或类似的东西。

要修复Java代码,请使用size()代替count() - 这就像在shell中调用count(true)而不是count()一样。