irpas技术客

MongoDB——更新操作详解_吴声子夜歌_mongo 更新

网络投稿 6492

语法 db.collection.update( <query>, //update的查询条件 <update>, //更新对象文档,含操作符功能使用 {//可选参数 upsert:<boolean>, multi:<boolean>, writeConcern:<document>, collation:<document> } )

用update命令在集合里更新一条或多条文档记录。 db为当前数据库、collection为指定集合名称、update为更新命令。

参数名称说明queryupdate的查询条件,类似SQL update 查询 where字句后面的查询条件updateupdate的更新对象和一些更新的操作符(如$,$inc…)等,也可以理解为sql update查询set子句后面的更新内容upsert可选。如果不存在update的记录,是否插入objNew:true为插入,默认是false,不插入multi可选,MongoDB默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来的多条记录全部更新writeConcern可选。自定义写出错确认级别collation可选。指定特定国家语言的更新归类规则
更新成功,返回WriteResult({"nUpdated":n})对象更新失败:返回结果中会包含WriteResult.writeConcernError对象字段内容 修改一条简单文档

先插入一条订单信息,包含名称、数量、明细 更新订单名称为"商品购物单2": 修改某一值用$set操作符

将数量加5: 显示:amount:35变为amount:40 修改数值,做加法运算。直接用$inc操作符,可以是正数、负数,也可以是小数。

将amount数值翻倍: 显示:amount:40变为amount:80 修改数值,做乘法运算。直接用$mul操作符,可以是正数、负数也可以是小数。

修改键名:

键名从amount变为bmount。 修改错误字段的键名,可以直接用$rename操作符。

删除字段:

bmount字段已经被删除。 删除一个字段,可以用$unset操作符。

$min

$min可以将给出的值与当前文档字段值进行比较,当给定值较小时则修改当前文档值为给定值。

$max

$max可以将给出的值与当前文档字段进行比较,当给定值较大时则修改当前文档值为给定值

修改一条文档里的数组和嵌套文档

对文档里的子文档值进行修改,可以通过主Key.SubKey的组合来实现子我能挡字段对应值的修改;对于数组值的修改,可以通过Key.Number的方式指定修改数组值,Number从0,1…开始,对应数组的第一个、第二个下标…

MongoDB数组下标从0开始,"detail.1"表示数组第二个元素引用数组或嵌套文档对象时,都需要加"",如"detail.1"、“overview.address”,中间用点号隔离 多文档修改

默认情况下update命令都执行修改一条文档,修改多条文档需要采用multi选项 将面粉价格小于30的记录,修改为40

增加文档字段

Update命令在特定情况下,可以增加文档的字段,甚至实现insert命令功能。这个特定条件是要修改的文档没有要修改的字段,而且update命令带upsert选项。

简化命令 db.collection.updateOne() 与update()唯一区别是少了multi选项,也就是说该命令只适用与符合条件的一条文档的修改。db.collection.updateMang() 与update()唯一的区别是命令少了multi选项,也就是说该命令 只适用于符合条件的多条文档的修改任务。db.collection.replaceOne()与update()区别有两处,一个没有multi,另外一个在第二个参数(update)中不能有更新操作符。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #mongo #更新