位置: 编程技术 - 正文

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)

  • 所得税税前扣除项目及扣除标准
  • 车辆购置税退税计算
  • 小规模纳税人的企业所得税税率
  • 企业当期的所得税费用
  • 如何解除委托合同范文
  • 公司名下的房产过户到个人要交多少税
  • 建筑劳务如何开三个点的发票
  • 工会活动奖励现金怎么入账
  • 往来款项包括什么
  • 抵扣联 发票联
  • 银行回单手续费分录
  • 增值税专用发票几个点
  • 账本一般保存几年就可以销毁2004年的规定
  • 收到货款确认收入但是后期开票了怎么做分录
  • 低值易耗品一次性摊销体现重要性
  • 出售无形资产是收入吗
  • 个税返还交所得税吗
  • 劳务公司差额征税怎么计算
  • 增值税专用发票利润怎么交税
  • 免税品销售有增值税吗
  • 因为买房子
  • 政府补助企业的钱要交税吗
  • 工程收入怎么算
  • 法院执行款可以开发票吗
  • 建筑劳务公司的会计账务处理
  • 印花税的购销合同改成买卖合同了吗?
  • 竣工决算调整入库流程
  • 招标服务费计算公式
  • windows10如何开启自动更新
  • win10蓝牙鼠标已连接不显示
  • 网页无法复制文字破解
  • 房租押金未全额缴纳
  • php ini
  • php date_diff
  • 键盘突然打不出来字
  • 以旧换新的概念
  • 促销费可以进项抵扣吗
  • 增值税专票如何查询对方是否抵扣
  • 哈利法塔里面有什么
  • ts基础类型
  • 萤火虫发光器的用途
  • vue组件强制刷新
  • 进项逾期未认证怎么办
  • wordpress如何批量导入商品
  • 进项税额转出在申报的时候怎么填
  • 进口关税账务处理办法
  • 税控盘全额抵扣政策
  • 固定资产清理的金额怎么算
  • 哪些收入需要缴纳个人所得税
  • 生产车间发生的费用计入什么科目
  • 交物业的发票有用吗
  • 加速折旧法是指在固定资产使用的早期少提折旧
  • 企业出现销售折扣的原因
  • 自然灾害的原因有哪些
  • 前几个月的印花税怎么算
  • 研发人员伙食费可以加计扣除吗为什么
  • 银行存款一直没有记账怎么调整
  • 单独运费怎么做账
  • 应付职工薪酬应该在借方还是贷方
  • 供应商退回来的钱应走哪个科目
  • 农业银行多级账簿可以代发工资吗
  • 分公司注销余额转总公司会计分录
  • 会计行政法规包括哪些条例?具体说明?
  • sqlserver 查看表
  • mac显示所有窗口的快捷键
  • 鼠标点击关闭按钮没反应
  • linux怎么配置vim
  • dghm.exe是什么程序
  • 如何卸载win8系统
  • jquery的deferred
  • n归档是什么软件
  • javascript 继承
  • 禁止所有陌生人的来电设置
  • python连接mq
  • js对象判断
  • 电子税务局更改密码怎么改
  • 浙江国税qzzn
  • 三方协议暂不支持缴款
  • 税务总局转变税收征管方式
  • 税务会计业务处理流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设