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
]
}
到此这篇关于MongoDB中UPDATE操作$pullAll的文章就介绍到这了,更多相关MongoDB操作$pullAll内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!