MongoDB在单个查询中更新多行

Sau*_*wal 2 mongodb node.js

我有一个包含以下文档的集合

{
   "_id" : 1,
   "item" : "item1",
   "stock" : 184
}
{
   "_id" : 2,
   "item" : "item2",
   "stock" : 330
}
{
   "_id" : 3,
   "item" : "item3",
   "stock" : 140
}
Run Code Online (Sandbox Code Playgroud)

我想使用单个查询更新此集合.

{
   "_id" : 1,
   "item" : "item1",
   "stock" : 80
}
{
   "_id" : 2,
   "item" : "item2",
   "stock" : 60
}
{
   "_id" : 3,
   "item" : "item3",
   "stock" : 170
}
Run Code Online (Sandbox Code Playgroud)

我可以使用它,forEach但我必须一次更新数千条记录,这将耗费时间.那么MongoDB有这个功能吗?

我们将非常感谢您的帮助.

kmd*_*eko 5

您可以在nodejs中使用批量操作Collection.initializeUnorderedBulkOp

var bulkOp = yourCollection.initializeUnorderedBulkOp();

bulkOp.find({ _id: 1 }).updateOne({ /* update document */ });
bulkOp.find({ _id: 2 }).updateOne({ /* update document */ });
// etc

bulkOp.execute();
Run Code Online (Sandbox Code Playgroud)

您可以根据需要构建它,然后让数据库一次完成所有操作.