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
    ]
  }
相关推荐
lhldsg1 小时前
全民健身解决方案软件开发实战:从架构设计到部署指南
java·前端·数据库·小程序
我是大猴子1 小时前
线上耗时问题排查
数据库
小码过河.2 小时前
oceanbase中zone和observer、分区表之间关系
前端·数据库·oceanbase
其实防守也摸鱼2 小时前
OpenClaw Windows 踩坑实战指南
运维·服务器·数据库·windows·github·copilot
SelectDB2 小时前
Apache Doris+ Paimon 2.0:构建 Agentic AI 数据闭环
大数据·数据库·数据分析
麦聪聊数据2 小时前
全链路数据安全防护(中):入口、权限、审计,筑牢安全管控铁三角
数据库
山岚的运维笔记3 小时前
mysql 专业笔记 -- 第 17 章:连接:连接三个具有相同名称 ID 的表
运维·数据库·笔记·后端·学习·mysql·dba
YangYang9YangYan3 小时前
校招视角|财务数字化岗位 SQL、工具、项目完整备考指南
大数据·数据库·sql
bksczm3 小时前
从 “什么是 MySQL“ 到库与表的完整操作(MySQL基础篇)
linux·数据库·mysql
风123456789~3 小时前
【Oracle专栏】解决clob+dblink 插入报错 ORA-22992
数据库·oracle