javascript - NodeJS - 使用 mongoose 解析大型集合

标签 javascript node.js mongoose bigdata

我的 mongodb 中有一个集合,其中包含大约 10 个 Mio 文档。我想遍历所有这些来更改某些字段。一次获取所有数据会使程序崩溃,因为数据太多,并使用如下所示的限制

MyModel.find({/* condition... */}).limit(500).exec()

是有问题的,因为我的修改没有改变条件,所以每次都会返回相同的文档。

任何人都可以给我提示如何逐步遍历/修改整个集合吗?

最佳答案

凯文概述了两个有效的选项。

另一种选择是本质上分页。如果您按 _id 排序并继续查询更大的 _id,您可以保持完全相同的逻辑。像这样的东西:

var lastId = new ObjectId();
MyModel.find({/* condition... */, _id: {$gt: lastId}}).sort({_id: 
1}).limit(500).exec(function(err, records){
    // Your logic
    lastId = records[records.length - 1]._id;
})

您只需将该函数包装在某种异步 while 循环中,并确保在未收到 500 条记录时退出。

关于javascript - NodeJS - 使用 mongoose 解析大型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47598977/

相关文章:

javascript - 按 2 个日期之间的日期过滤数组中的数组

javascript - 正则表达式可以进行多个匹配吗?

asp.net - 卸载页面自定义保存提示?

javascript - Polar accesslink API POST 用户无法工作

javascript - 将回调函数传递给 Mongoose 聚合函数

javascript - 无法读取未定义的属性 'length' [Galleria-1.4.2.js]

node.js - 使用 Socket.io 和 Redis 的 Node 集群问题

node.js - Swift http post 请求将空正文发送到服务器

javascript - mongodb中用户排行榜分数的最佳设计

node.js - 如何在nodejs中使用jsonwebtoken实现注销功能