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
    ]
  }
相关推荐
2401_874732535 小时前
为你的Python脚本添加图形界面(GUI)
jvm·数据库·python
Chengbei115 小时前
Redis 图形化综合检测工具:redis_tools_GUI,一键探测 + 利用
数据库·redis·web安全·网络安全·缓存·系统安全
hutengyi5 小时前
PostgreSQL的备份方式
数据库·postgresql
mldlds6 小时前
MySQL加减间隔时间函数DATE_ADD和DATE_SUB的详解
android·数据库·mysql
Chengbei116 小时前
若依全漏洞复现:从 SQL 注入到 RCE 一站式实战 复现、利用与防御
数据库·sql·安全·web安全·网络安全·系统安全·安全架构
小江的记录本7 小时前
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
java·数据库·分布式·后端·sql·spring·面试
数据皮皮侠7 小时前
中国城市间地理距离矩阵(2024)
大数据·数据库·人工智能·算法·制造
lars_lhuan7 小时前
从键值数据库到Redis
数据库·redis·缓存
倔强的石头1067 小时前
KaiwuDB社区版 3.1.0 在 Ubuntu 22.04 部署实战:TLS 配置、踩坑复盘与轻量压测
数据库·ubuntu·kwdb