我已经搜索过,但找不到任何答案。虽然不规则不是问题,但我更好奇为什么会发生这种情况。
当我对具有 100k 条记录的集合进行相当简单的查找时,控制台中的任何数字限制为 100 或 200 以上.log在下面的代码片段中总是报告返回的更多记录。
var collection = db.collection('mycoll');
collection.find({}).sort({created_date: -1}).limit(500).toArray(function (err, docs) {
if (err) {
throw err;
}
db.close();
console.log(docs.length);
});
限制为 500 时,它返回 590 或 591,有什么想法吗?
编辑:该问题似乎与这段代码有关 - https://github.com/mongodb/node-mongodb-native/blob/2.0/lib/cursor.js#L596
skip 和 limit 选项作为第二个参数包含在 find()
方法中。(未测试)
您可以尝试以下操作:
collection.find({}, {sort: {created_date: -1}, limit: 500});
编辑
您可以先以 asc 顺序created_date只尝试这个(限制)吗? 这适用于 mongo 节点驱动程序 1.4
var options = {
"limit": 20,
"sort":"created_date"
};
collection.find({},options).toArray();