gpt4 book ai didi

node.js - 如何在 MongoDB 中批量保存对象数组?

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:40 24 4
gpt4 key购买 nike

我看了很久,没有找到答案。 Node.JS MongoDB 驱动程序文档说您可以使用 insert(docs) 进行批量插入,这很好并且运行良好。

我现在有一个包含超过 4,000,000 个项目的集合,我需要向所有项目添加一个新字段。通常 mongodb 每 100 毫秒只能写入 1 个事务,这意味着我需要等待几天才能更新所有这些项目。我怎样才能进行“批量保存/更新”来一次更新它们? update() 和 save() 似乎只适用于单个对象。

伪代码:

var stuffToSave = [];
db.collection('blah').find({}, function(err, stuff) {
stuff.toArray().forEach(function(item)) {
item.newField = someComplexCalculationInvolvingALookup();
stuffToSave.push(item);
}
}
db.saveButNotSuperSlow(stuffToSave);

当然,我需要对一次执行 10,000 次这样的操作设置一些限制,以免尝试一次执行所有 400 万次,但我认为您明白了。

最佳答案

MongoDB 允许您使用单个 db.collection.update(query, update, options) 调用来更新与特定查询匹配的许多文档,请参阅 documentation 。例如,

db.blah.update(
{ },
{
$set: { newField: someComplexValue }
},
{
multi: true
}
)

multi 选项允许命令更新与查询条件匹配的所有文档。请注意,使用 Node.JS 驱动程序时也适用完全相同的情况,请参阅 that documentation .

如果您要对集合执行许多不同的更新,则可以将它们全部包装在 Bulk() 构建器中,以避免向数据库发送多个更新的一些开销。

关于node.js - 如何在 MongoDB 中批量保存对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24474849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com