MongoDB——更新操作详解
语法
db.collection.update(<query>, //update的查询条件<update>, //更新对象文档,含操作符功能使用{//可选参数upsert:<boolean>,multi:<boolean>,writeConcern:<document>,collation:<document>}
)
用update命令在集合里更新一条或多条文档记录。
db为当前数据库、collection为指定集合名称、update为更新命令。
参数名称 | 说明 |
---|---|
query | update的查询条件,类似SQL update 查询 where字句后面的查询条件 |
update | update的更新对象和一些更新的操作符(如$,$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)中不能有更新操作符。
MongoDB——更新操作详解相关推荐
- java查询到更新之前的数据_Java对数据库的查询和更新操作详解
这篇文章主要介绍了使用Java对数据库进行基本的查询和更新操作,是Java入门学习中的基础知识,需要的朋友可以参考下 数据库查询 利用Connection对象的createStatement方法建立S ...
- MongoDB——查询操作详解
查询语法 db.collection_name.find (query, //查询条件projection //可选,指定需要返回的字段:默认返回所有字段 ) 查询集合所有文档 可以在find()后调 ...
- MongoDB——聚合操作详解
聚合(Aggregation)为集合文档数据提供各种处理数据方法,并返回计算结果. MongoDB提供了3种方式来执行聚合命令: 聚合管道方法 map-reduce方法 单一目标聚合方法 1. 聚合管 ...
- SCCM 2007 R2部署、操作详解系列之部署篇
SCCM 2007 R2部署.操作详解系列之部署篇 导语: 大家好,我是John Cai(蔡建涛),欢迎大家来到我的博客-E网情深http://johncai.blog.51cto.com/.今天,我 ...
- C 和 C++ 文件操作详解
来源:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551662.html 来源:http://www.cnblogs.com/likebet ...
- OSCache操作详解+标签使用
OSCache操作详解+标签使用 1.OSCache是什么? OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能.OSC ...
- python excel数据处理教程pdf_python对excel操作详解.pdf
python对excel操作详解 拟 制 人 胡张东 太仓同维电子有限公司 审 批 人 xxx 测试中心软件测试科 时 间 2013-11-04 Python对Excel操作 详解 文档摘要: 本文档 ...
- QT QtableView操作详解
本文实现了使用QtableView控件来显示数据,数据源使用txt文本作为数据源,使用了QStandardItemModel作为数据模型来实现了对TableView空间的初始化,和对txt数据源的增删 ...
- ILI9341的使用之【四】RGB接口操作详解
<ILI9341的使用之[一]TFT-LCD原理(转载)> <ILI9341的使用之[二]ILI9341介绍> <ILI9341的使用之[三]ILI9341系统通信接口模 ...
最新文章
- Netty入门教程——认识Netty
- 新版蚂蚁网有抄袭怪兽吗?
- UAVStack的慢SQL数据库监控功能及其实现
- Python 调试:step into/step out/step over 的区别
- php函数计算加法,JavaScript_javascript实现一个数值加法函数,废话不多说,直接奉上代码
JS - phpStudy...
- python中的apply(),applymap(),map() 的用法和区别
- 关于substring的理解
- 【android】getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的作用
- anaconda 安装 pytorch
- 转错误	x	error LNK1104: 无法打开文件“E:\xxxx\Debug\xxxx.exe”
- PHP (20140510)深入浅出 JavaScript 变量、作用域和内存 v 0.5
- 家居品牌如何在小红书上推广?家居产品推广看这里
- 游戏服务器背包设计与实现
- Office下载记录
- 新手小白适合学习什么编程语言
- AndroidQ 分屏窗口模式 (AMS部分)
- 基于MATLAB的求解线性方程组(附完整代码和例题)
- windows窗口分析,父窗口,子窗口,所有者窗口
- 1700人参加的钢铁行业盛会,下面是你必须知道的!
- 笔记:caffe安装编译,并用ssd gpu训练自己的数据集