Node.js/MongoDB limit 返回更多记录



我已经搜索过,但找不到任何答案。虽然不规则不是问题,但我更好奇为什么会发生这种情况。

当我对具有 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();

最新更新