位置: 编程技术 - 正文

MongoDB中文档的更新操作示例详解(mongodb document)

编辑:rootadmin

推荐整理分享MongoDB中文档的更新操作示例详解(mongodb document),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mongodb bi,mongodb项目使用说明,mongodb基本操作,mongodb 文档,mongodb中文手册,mongodb 文档,mongodb中文手册,mongodb docs,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

在MongoDB中,更新单个doc的操作是原子性的。默认情况下,如果一个update操作更新多个doc,那么对每个doc的更新是原子性的,但是对整个update 操作而言,不是原子性的,可能存在前面的doc更新成功,而后面的doc更新失败的情况。由于更新单个doc的操作是原子性的,如果两个更新同时发生,那么一个更新操作会阻塞另外一个,doc的最终结果值是由时间靠后的更新操作决定的。

我们在前面的文章中提到过文档的基本的增删改查操作,MongoDB中提供的增删改查的语法非常丰富,不清楚的朋友们可以参考这篇文章:

$push可以向已有数组末尾追加元素,要是不存在就创建一个数组,还是以我们的上面的book为例,假设book有一个字段为comments,是一个数组,表示对这个book的评论,我们可以使用如下命令添加一条评论:

此时不存在comments字段,系统会自动帮我们创建该字段,结果如下:

此时我们可以追加评论,如下:

结果如下:

如果想一次添加3条评论,可以结合$each一起来使用,如下:

结果如下:

我们可以使用$slice来固定数组的长度,假设我固定数组的长度为5,如果数组中的元素不足5个,则全部保留,如果数组中的元素超过5个,则只会保留最新的5个,如下:

注意:$slice的值为负数,运行结果如下:

我们还可以在清理之前使用$sort对数据先进行排序,然后再清理比如我有一个class文档,如下:

现在向这个文档中插入student,每个student有姓名和成绩,然后按照成绩降序排列,只要前5条数据,如下:

$sort的取值为-1和1,-1表示降序,1表示升序。

上面的命令执行两次之后(即插入两次),结果如下:

$slice和$sort不能只和$push一起使用,还要加上$each。

MongoDB中文档的更新操作示例详解(mongodb document)

$addToSet

我们可以在插入的时候使用$addToSet,表示要插入的值如果存在则不插入,否则插入,如下:

上面的命令执行多次之后,发现只成功插入了一条数据。也可以将$addToSet和$each结合起来使用,如下:

$pop

$pop可以用来删除数组中的数据,如下:

1表示从comments数组的末尾删除一条数据,-1表示从comments数组的开头删除一条数据。

$pull

使用$pull我们可以按条件删除数组中的某个元素,如下:

表示删除数组中值为的数据。

$

既然是数组,我们当然可以通过下标来访问,如下一行操作表示将下标为0的(第一个comments)comments修改为:

可是有的时候我并不知道我要修改的数据处于数组中的什么位置,这个时候可以使用$符号来解决:

查询条件查出来的下标,$符号就代码这个下标,然后通过$符号就能将之修改。

save

save是shell中的一个函数,接收一个参数,这个参数就是文档,如果文档中有_id参数save会执行更新操作,否则执行插入操作,使用save操作我们可以方便的完成一些更新操作。

类似于如下命令则表示一个插入操作(因为没有_id):

好了,MongoDB的更新操作我们就先介绍这么多,有问题欢迎留言讨论。

参考资料:

1.《MongoDB权威指南第2版》

总结

标签: mongodb document

本文链接地址:https://www.jiuchutong.com/biancheng/312089.html 转载请保留说明!

上一篇:Java操作mongodb的模糊查询和精确查询(java操作mongodb数据库)

下一篇:MongoDB用Mongoose得到的对象不能增加属性完美解决方法(两种)(mongodb morphia)

  • 增值税相关政策
  • 兼职人员工资需要申报个税吗
  • 港资企业定义
  • 非限定性净资产借贷方向
  • 个税计提和发放分录
  • 个税申报截止日期2023年8月
  • 借款利息收入所得税
  • 工作未满12个月被辞退时前月平均工资怎么计算
  • 客户往来对账单
  • 其他流动资产待抵扣进项税额
  • 该企业本月发生如下经济业务
  • 自产自用增值税组成计税价格
  • 施工企业确认收入的方法有哪两种
  • 银行取现怎么取
  • 计提坏账准备,坏账准备是增加还是减少
  • 银行借款用于在建工程
  • 增值税专票已经认证
  • 固定资产折旧率是多少
  • 自然人是否适用财政部税务总局2022年第15号公告
  • 盘亏的转销金额
  • 事业单位零余额账户使用流程
  • netframework4.8安装未成功
  • 现金比率计算公式含义
  • 个体户流水过大怎么避税
  • centos停止发布
  • 企业发放职工薪酬的账务处理例子
  • 增值税纳税义务人
  • 购买材料支出属于资本性支出吗
  • 制药企业成本核算流程
  • 工业企业在进行材料采购
  • 公司怎么查已报销发票
  • php操作redis
  • php如何实现
  • typescript中文
  • 卷积神经网络有哪些
  • 传承古老文化
  • 干货!​如何打造我们自己的“ChatGPT”?| 大佬思辨
  • cp命令复制文件到另一个目录并改名
  • Laravel+jQuery实现AJAX分页效果
  • autoreconf -ivf
  • mysql列表
  • 个人个税汇算清缴怎么做
  • 将外购商品用于个人消费
  • 民间非营利组织会计账务处理
  • 非定额备用金的使用范围
  • 土地使用权转让合法吗
  • 小规模纳税人开专票需要交税吗
  • 工会经费计提比例是应发工资还是实发工资
  • 公司收入和开支比例
  • 公司两年未给员工申报个税违法吗
  • 微信收款计入现金流量吗
  • 如何计算技术转让所得
  • 明细账的作用
  • SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
  • macpro教程
  • linux中字符设备有哪些
  • windows无法启动,可能原因
  • ubuntu16.04远程连接
  • win8怎么调整显示器亮度
  • Linux系统开源VPN Openvpn进程异常退出解决方法
  • cocos3d物理引擎
  • Unity3D游戏开发培训课程大纲
  • jqueryon事件
  • python输入错了怎么办
  • Android AsyncTask简要分析
  • [置顶]公主大人接下来是拷问时间31
  • 关于Python的lambda函数,以下选项
  • 深入理解python特性
  • unity manifest
  • android圆形按钮
  • python查找字符串中指定字符的个数
  • androidmvvm框架
  • unity3dextractor
  • js function的this指向
  • 开发Blog整理
  • Android ImageLoader 本地缓存
  • 安卓多点触屏在哪里设置
  • 股权转让和大宗转让区别
  • 上海市松江区房价?
  • 非关税壁垒英语翻译
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设