node.js - Mongoose 跳过不跳过文档

标签 node.js mongoose

我想迭代包含 ~31k 文档的集合。 每次我想要查询返回 100 个文档时,使用 skip 从第一个文档开始并返回下一个 100 个文档,依此类推。 我从请求中获取 skip 索引:

find: function (req, res) {
            var name = "node"
            var limit = 100;
            console.log(req);
            var query = {};
            query = req.query;
            var url_parts = url.parse(req.url, true);
            var query = url_parts.query;
            console.log("skip typeof : " + typeof(Number(query.skip)));
            var Collection = getCollection(name);
Collection.find(query).skip(Number(query.skip)).limit(limit).toArray(function(err, docs) {
                console.log(docs);
                res.send(docs);
            });

            });

控制台日志显示 query.skip : 1, 101 , 201 ... 所以问题一定出在我的查询中:

Collection.find(query).skip(Number(query.skip)).limit(limit).toArray(function(err, docs) {
                console.log(docs);
                res.send(docs);
            });

但是查询返回的文档对于每个请求都是相同的:

req 1 [{nid : 4033},{nid:4501}]
req 2 [{nid : 4033},{nid:4501}]

跳过值为数字:

skip typeof : number

感谢您的帮助。

最佳答案

我的猜测是 query.skip 是一个字符串,MongoDB 希望它是一个数字:

Collection.find({}).skip(Number(query.skip)).limit(...)

编辑:显然,您还将query传递给find(),如果skip,这将不起作用 也是一个属性(因为 MongoDB 会将其视为查询字段)。

试试这个:

var skip = Number(query.skip);
delete query.skip;
Collection.find(query).skip(skip).limit(...);

关于node.js - Mongoose 跳过不跳过文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33800917/

相关文章:

node.js - MongoDB 聚合 : Sorting by existing values first

javascript - TypeError : callback. apply is not a function (Node.js & Mongodb)

node.js - 覆盖 Mongoose 模型方法

node.js - 如何在带有 typescript 项目的 react js 中使用 .env 文件?

javascript - 如何查找选定元素或 ElementHandle 的后代元素?

javascript - 循环保存到 MongoDB

node.js - mongoose exec 调用 async.parallel

node.js - TypeScript 编译时找不到外部模块

node.js - Mongoose - 'save' 方法不存在

MongoDB 列出父类别中的子类别