MongoDB中UPDATE操作$pullAll

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第70篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关注威赞。谢谢。

本篇文章是Mongodb的第70篇文章了。回头想想当时写第一篇文章的场景,为自己设定了一个宏大的目标,自己要写100篇,写200篇,把Mongodb官网上所有的知识点都按照自己的理解写出来。其实中间有很多事情耽误了进度,或工作忙,或家庭事务繁忙,或有其他的想法志向。但在有时间的时候,依旧会打开官方文档,打开编辑器,开始写文档。力争每个文档描述一个知识点,把知识点都使用中文描述清楚。里面的每一个应用例子都自己测试过,理解后再写到文档当中。虽然进度会比较缓慢,但保证了自己学习整理的同事,也将知识点清晰的呈现在每一个阅读文档的朋友。平时有跑步的习惯,也跑过2次马拉松。写作就和跑步一样,平时有积累,后面才可以持续性的输出。写作当中遇到的一些问题,瓶颈,就和跑步训练当中遇到的伤病,瓶颈,或者马拉松跑道上的撞墙一样,努力坚持,总可以到达终点。工作这么多年,一直在看书学习,除了工作内容以外,写文档的经历确实比较少。现在趁着Mongodb知识点整理的机会,把编写文档的技能提高起来,同时让自己真正的开始积累起来。现在这里是第70篇,距离100篇已经不远,期待后面的200篇,300篇。。。持续写作,持续积累,加油!!!

言归正传 ,本文介绍Mongodb UPDATE操作中的$pullAll, 用来从数组中删除多个元素。

定义

与pull有所不同,pull操作通过指定一个查询条件或单个值来删除数组中的元素。 而pullAll删除所有在指定列表中的数组元素。按照UPDATE操作中按照下面的形式,使用pullAll.

复制代码
{$pullAll: {<field1>:  [<value1>, <value2>,...]}}

删除嵌套文档或数组中的元素,使用点操作符。

行为

  • 自mongodb5.0开始,UPDATE操作按照字段名称的字典顺序更新字段。当字段中包含数字时,按照数字顺序依次更新字段。当然,对一个文档的多个字段操作,是原子性的。
  • mongodb 5.0版本以后,向$pullAll传入空表达式({ })时,mongodb不再抛出错误。空表达式不会修改字段值 ,也不会在oplog中,添加新的操作记录。
  • 当用户指定删除文档或数组时,$pullAll操作仅删除掉和指定文档数组严格相等的元素,包括数组元素的顺序。

应用

创建survey集合

复制代码
db.survey.insertOne({
    _id:1, scores: [0,2,5,5,1,0]
})

构建数据更新语句,删除scores字段中的0和5

复制代码
db.survey.updateOne({_id:1},{$pullAll:{ scores: [0,5]}})

查询更新结果

复制代码
db.survey.find()
{
    "_id": 1,
    "scores": [
      2,
      1
    ]
  }
相关推荐
CCIE-Yasuo1 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
这个DBA有点耶1 小时前
内核级AI与多模融合:AI数据库在海外场景的落地要点
数据库·人工智能·架构
涛思数据(TDengine)1 小时前
从工业本体到 AI 原生:TDengine 出席 2026 QCon 分享工业数据基础设施路径
大数据·数据库·人工智能·tdengine·工业
Jesse_EC1 小时前
换乘次数最少的路径 SQL 查询详解与实战经验——从 WITH RECURSIVE 到 pgRouting
数据库·postgresql
工控丫丫1 小时前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库
这个DBA有点耶3 小时前
云数据库半夜卡顿,CPU才30%?深挖云盘IOPS突发限制与内核挂起机制
数据库·mysql·云原生
无言听风雨丶4 小时前
Redis 运维实战与排错
运维·数据库·redis
小天源5 小时前
智叟云集系统 · 架构与职责分层
服务器·前端·数据库
herinspace6 小时前
管家婆实用贴-SQL 2008如何修改成混合模式
服务器·数据库·sql·管家婆软件·财务软件·合肥管家婆软件
打螺丝的小李6 小时前
制造企业质量管理系统的三类产品形态:分别解决什么问题
数据库·制造