我很惊讶地发现下面的示例代码只更新了一个文档:
> db.test.save({"_id":1, "foo":"bar"});
> db.test.save({"_id":2, "foo":"bar"});
> db.test.update({"foo":"bar"}, {"$set":{"test":"success!"}});
> db.test.find({"test":"success!"}).count();
1
我知道我可以循环并不断更新,直到它们全部更改,但这似乎非常低效。有没有更好的方法?
发布于 2016-06-21 07:52:14
在MongoDB客户端中,键入:
db.Collection.updateMany({}, $set: {field1: 'field1', field2: 'field2'})
3.2版中的新功能
参数::
{}: select all records updated
未采用关键字参数multi
发布于 2015-06-08 15:19:49
当您发出update命令时,MongoDB将只找到一个符合查询条件的匹配文档,首先匹配的文档将被更新,即使有更多匹配条件的文档将被忽略。
因此,为了克服这个问题,我们可以在update语句中指定"MULTI“选项,这意味着更新所有符合查询条件的文档。扫描集合中的所有文档,查找符合条件的文档并进行更新:
db.test.update({"foo":"bar"},{"$set":{"test":"success!"}}, {multi:true} )
发布于 2020-01-14 19:44:02
以下命令可以更新集合的多条记录
db.collection.update({},
{$set:{"field" : "value"}},
{ multi: true, upsert: false}
)
https://stackoverflow.com/questions/1740023
复制相似问题