首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MongoDB:如何使用一条命令更新多个文档?

MongoDB:如何使用一条命令更新多个文档?
EN

Stack Overflow用户
提问于 2009-11-16 12:18:47
回答 8查看 274.9K关注 0票数 172

我很惊讶地发现下面的示例代码只更新了一个文档:

代码语言:javascript
复制
> 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

我知道我可以循环并不断更新,直到它们全部更改,但这似乎非常低效。有没有更好的方法?

EN

回答 8

Stack Overflow用户

发布于 2016-06-21 07:52:14

在MongoDB客户端中,键入:

代码语言:javascript
复制
db.Collection.updateMany({}, $set: {field1: 'field1', field2: 'field2'})

3.2版中的新功能

参数::

代码语言:javascript
复制
{}:  select all records updated

未采用关键字参数multi

票数 5
EN

Stack Overflow用户

发布于 2015-06-08 15:19:49

当您发出update命令时,MongoDB将只找到一个符合查询条件的匹配文档,首先匹配的文档将被更新,即使有更多匹配条件的文档将被忽略。

因此,为了克服这个问题,我们可以在update语句中指定"MULTI“选项,这意味着更新所有符合查询条件的文档。扫描集合中的所有文档,查找符合条件的文档并进行更新:

代码语言:javascript
复制
db.test.update({"foo":"bar"},{"$set":{"test":"success!"}}, {multi:true} )
票数 4
EN

Stack Overflow用户

发布于 2020-01-14 19:44:02

以下命令可以更新集合的多条记录

代码语言:javascript
复制
db.collection.update({}, 
{$set:{"field" : "value"}}, 
{ multi: true, upsert: false}
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1740023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档