MongoDB的update和set的用法

MongoDB的update和set

db.集合.update({参数1}, {参数2}, {参数3})参数1是筛选条件,通过条件找到数据,参数2是要修改的内容,要将找到的数据的内容修改成什么样,参数3是一个条件,来决定update是否要将所有符合条件的文档全部更改。

update的特点

  1. update默认只会修改符合条件的第一条数据,如果有多条数据符合条件,那么也只会修改第一条。如果想修改全部符合条件的文档,那么需要将第三个参数写为{milti:true}
  2. update默认覆盖式写入,也就是参数2是什么样,那么写完之后文档就是什么样,最多也就多一个id,因为默认不会把id覆写。如果想改某个字段的值而非整个文档覆写,需要使用一个$set

$set

$set是为了弥补update覆写的特点,可以根据条件找到文档,然后只修改文档中某些字段的值,而非覆盖式写入。

用法:db.users.update({age:21},{$set:{name:'wuhu'}}),既update参数2写为{$set:{xxx:yyy}}xxx是要设置的字段名,yyy是设置的值。

如果$set设置了原本就存在的字段,那么就是修改
如果设置了原本不存在的字段,那么就会新增字段。


例子

//用来查询
db.users.find()

//插入10条数据,用于测试
var arr =[];
for(var i = 0; i < 10; i++){arr.push({name:'wc'+i, age:18+i});};
db.users.insertMany(arr);

//将age为18的文档,更新为score:199,score原本不存在,但依然直接覆写了
db.users.update({age:18},{score:199})

//将age为20的文档,改为name:wuhu,name原本存在,这里还是直接覆写
db.users.update({age:20},{name:'wuhu'})

//将age为21的文档,设置为name为wuhu,结果是age还是21,name改为了wuhu,只更新没覆写
db.users.update({age:21},{$set:{name:'wuhu'}})

//将age为22的文档,设置为name为bangbuzhule,gender为excited
//name原本就有,所以更新了,gender原本没用,这里直接新增了一个字段
db.users.update({age:22},{$set:{name:'bangbuzhule',gender:'excited'}})

//将name为wuhu的所有文档的size字段改为18cm,multi为true就代表着将全部符合条件的文档进行更改
db.users.update({name:'wuhu'},{$set:{size:'18cm'}},{multi:true})
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值