MongoDB 使用 update() 和 save() 方法来更新集合中的文档。
update() 方法
update() 方法用于更新已存在的文档。语法格式如下:
 
 db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
) 
 
参数说明:
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
实例
往集合 test中插入如下数据:
db.test.insert({
    "id" : 666,
    "name" : "tous",
    "age" : 22.0
})通过 update() 方法来更新name:
db.test.update({'name':'tous'},{$set:{'name':'tous new'}})查询结果:
可以看到name由原来的 "tous" 更新为了 "tous new"。
以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。
db.test.update({'name':'tous'},{$set:{'name':'tous new'}},{multi:true})save() 方法
save() 方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入。语法格式如下:
 
 db.collection.save(
   <document>,
   {
     writeConcern: <document>
   }
) 
 
参数说明:
- document : 文档数据。
- writeConcern :可选,抛出异常的级别。
实例
以下实例中我们替换了 _id 为 63e5eaaae7a700a1df67ee52的文档数据:
db.test.save({
    "_id" : ObjectId("63e5eaaae7a700a1df67ee52"),
    "id" : 666.0,
    "name" : "tous new save",
    "age" : 25.0,
    "address":"中国"
})结果:

替换成功后,我们可以通过 find() 命令来查看替换后的数据



















