【MongoDB学习笔记13】MongoDB的更新(update)操作进阶
admin
2023-04-12 11:42:03
0

一、批量更新

默认只对符合条件的一条文档更新

> db.post.find()   
{ "_id" : ObjectId("54a530c3ff0df3732bac1681"), "id" : 2, "name" : "joe", "age" : 49 }   
{ "_id" : ObjectId("54a530c3ff0df3732bac1680"), "id" : 1, "name" : "joe", "age" : 21, "comments" : [ "test2", "test9", "test5" ] }
> db.post.update({"name":"joe"}, {$set:{"age":70}})   
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })    
> db.post.find()    
{ "_id" : ObjectId("54a530c3ff0df3732bac1681"), "id" : 2, "name" : "joe", "age" : 70 }  
{ "_id" : ObjectId("54a530c3ff0df3732bac1680"), "id" : 1, "name" : "joe", "age" : 21, "comments" : [ "test2", "test9", "test5" ] }    >

 
利用update的第四个参数进行批量更新:

> db.post.update({"name":"joe"}, {$set:{"age":30}},false,true)   
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })> db.post.find()    
{ "_id" : ObjectId("54a530c3ff0df3732bac1681"), "id" : 2, "name" : "joe", "age" : 30 }   
{ "_id" : ObjectId("54a530c3ff0df3732bac1680"), "id" : 1, "name" : "joe", "age" : 30, "comments" : [ "test2", "test9", "test5" ] }    
>

附注:update方法参考

update( criteria, objNew, upsert, multi )    
criteria : update的查询条件,类似sql update查询内where后面的    
objNew   : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的    
upsert   : 这个参数的意思是,无论false还是true,没有匹配的键则新增加一个;

multi    : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

 

二、更新文档键值,无键值的则新增键值;

> db.post.update({"name":"joe"}, {$set:{"sex":1}},false,true)   
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })    
> db.post.find()    
{ "_id" : ObjectId("54a530c3ff0df3732bac1681"), "id" : 2, "name" : "joe", "age" : 30, "sex" : 1 }    
{ "_id" : ObjectId("54a530c3ff0df3732bac1680"), "id" : 1, "name" : "joe", "age" : 30, "comments" : [ "test2", "test9", "test5" ], "sex" : 1 }    
> db.post.update({"name":"joe"}, {$set:{"school":"marry"}},true,true)    
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })    
> db.post.find()    
{ "_id" : ObjectId("54a530c3ff0df3732bac1681"), "id" : 2, "name" : "joe", "age" : 30, "sex" : 1, "school" : "marry" }    
{ "_id" : ObjectId("54a530c3ff0df3732bac1680"), "id" : 1, "name" : "joe", "age" : 30, "comments" : [ "test2", "test9", "test5" ], "sex" : 1, "school" : "marry" }    >


相关内容

热门资讯

终于了解“乐游棋牌开挂器?”(... 有 亲,根据资深记者爆料乐游棋牌是可以开挂的,确实有挂(咨询软件无需打开...
玩家分享攻略“皇豪互娱牛牛究竟... 您好:皇豪互娱牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款...
终于懂了“飞鹰牛牛是不是有挂?... 有 亲,根据资深记者爆料飞鹰牛牛是可以开挂的,确实有挂(咨询软件无需打开...
原创 3... 周鸿祎创办的360集团是中国网络安全领域龙头企业,经过20年的发展和积累,已拥有四个“全球领先”优势...
【第一资讯】“17麻将十三水怎... 家人们!今天小编来为大家解答17麻将十三水透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪...
今日重大消息“九酷牛牛怎么开挂... 您好:九酷牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游戏...
今日重大消息“微乐锄大地怎么开... 家人们!今天小编来为大家解答微乐锄大地透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买...
今日重大发现“乐游510k是不... 今日重大发现“乐游510k是不是有挂?”(确实真的有挂)您好,乐游510k这个游戏其实有挂的,确实是...
今日重大发现“么么都莱游戏开挂... 您好:么么都莱游戏这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款...
【第一消息】“快乐竞技怎么开挂... 【第一消息】“快乐竞技怎么开挂?”(必胜开挂神器)您好,快乐竞技这个游戏其实有挂的,确实是有挂的,需...