Mongodb使用$pop删除数组中的元素

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

本文描述怎样从Mongodb的文档数组字段中,使用$pop删除数组中的元素。

定义

$pop操作符删除数组当中的第一个元素或最后一个元素。向指定数组字段传入参数-1,表示删除第一个元素。而向指定数组字段传入参数1,表示删除最后一个元素。

按照下面的形式,使用$pop操作符

复制代码
{$pop: {<field>: -1|1, ...}}

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

行为

  • 自mongodb5.0开始,UPDATE操作按照字段名称的字典顺序更新字段。当字段中包含数字时,按照数字顺序依次更新字段。当然,对一个文档的多个字段操作,是原子性的。
  • mongodb 5.0版本以后,向$pop传入空表达式({ })时,mongodb不再抛出错误。空表达式不会修改字段值 ,也不会在oplog中,添加新的操作记录。
  • 针对非数组字段使用$pop时,数据更新操作会报错。
  • 当使用$pop操作删除数组中的最后一个元素时,数组并不会被删除,而是保留一个空数组。

应用

删除数组中的第一个元素

创建students集合

复制代码
db.students.insertOne({_id: 1, scores:[8,9,10]})

构建数据更新语句,删除字段scores中的第一个元素8

复制代码
db.students.updateOne({_id: 1}, {$pop: {scores: -1}})

查询更新结果

删除数组当中的最后一个元素

向集合中插入数据。其中scores是数组字段,包含两个元素。

复制代码
db.students.insert({_id: 10, scores:[9, 10]})

构建查询语句,删除scores数组字段的最后一个元素10

复制代码
db.students.updateOne({_id: 10}, {$pop: {scores: 1}})

查询数据更新结果

相关推荐
Small-Young28 分钟前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·spring boot·mysql·postgresql·乐观锁·并发控制
浮生若城31 分钟前
MySQL 数据库基础
数据库·mysql
香蕉大香蕉(06敬畏市场)43 分钟前
MySQL 单点详解(09)
java·数据库·mysql·面试·八股·大厂实习
瀚高PG实验室1 小时前
瀚高数据库运行日志(错误日志)查看与分析方法
数据库·postgresql·瀚高数据库
snow@li1 小时前
PostgreSQL:PostgreSQL(PG)全景深度梳理
数据库·postgresql
java_nnnn1 小时前
Spring IoC & DI 从入门到理解:控制反转、依赖注入与 Bean 管理详解
数据库·sql·spring
瀚高PG实验室2 小时前
HGHAC集群版本升级
数据库·postgresql·瀚高数据库
品牌常新2 小时前
室外巡检机器人推荐:园区与厂区怎么选
数据库·人工智能·机器人
snow@li2 小时前
redis:RedisDesktopManager(RDM/RESP.app)Redis 数据可视化全景深度梳理
数据库·redis·缓存
lqbzlll2 小时前
MySQL 慢查询日志开了但看不懂?从 slow_query_log 到 EXPLAIN ANALYZE 一步步定位
数据库·mysql·adb