MongoDB——更新操作详解

语法
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可选。指定特定国家语言的更新归类规则
  1. 更新成功,返回WriteResult({"nUpdated":n})对象
  2. 更新失败:返回结果中会包含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…开始,对应数组的第一个、第二个下标…

在这里插入图片描述

在这里插入图片描述

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

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

增加文档字段

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

在这里插入图片描述

简化命令
  1. db.collection.updateOne() 与update()唯一区别是少了multi选项,也就是说该命令只适用与符合条件的一条文档的修改。
  2. db.collection.updateMang() 与update()唯一的区别是命令少了multi选项,也就是说该命令 只适用于符合条件的多条文档的修改任务。
  3. db.collection.replaceOne()与update()区别有两处,一个没有multi,另外一个在第二个参数(update)中不能有更新操作符。
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值