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

news2024/11/23 22:45:33

学习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}})

查询数据更新结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1817743.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA项目上传Github流程+常见问题解决

一、Github上创建仓库 项目创建好后如图所示 二、IDEA连接Github远程仓库 管理远程 复制远程地址 定义远程 登录Github 点击进入File->Settings->Version Control->Github登录自己的账号并勾上“√” 三、推送项目 点击推送 修改为main 点击确定&#xff0c;打开远程…

Kimichat使用案例014:用kimichat自动批量重命名三体字幕文件(零代码编程)

文章目录 一、介绍二、字幕文件三、kimi输入内容四、kimi输出内容五、运行程序一、介绍 网上下载了Netflix的三体电视剧,但没有字幕,又从字幕网站下载了字幕文件,由于字幕文件和视频文件标题有差异,需要全部进行重命名。 二、字幕文件 从字幕网站下载了字幕文件如下: 三、…

基于 Element UI 的高效前端表格模板开发

在前端开发中&#xff0c;表格展示和搜索功能是常见的需求之一。为了提高开发效率&#xff0c;我们可以通过创建一个可复用的表格模板来应对各种类似的场景。本文将分享一个基于 Element UI 的表格模板&#xff0c;它包含了搜索、分页和操作按钮等功能&#xff0c;可以作为未来…

基于zemax的圆孔、矩形衍射、双缝干涉与自定义孔径面型应用分析

自学案例节选自某乎 1&#xff1a;圆孔、矩形衍射、双缝干涉与自定义孔径面型应用分析 讨论一些基本的光学衍射、干涉现象&#xff0c;在加深对光学知识理解的同时&#xff0c;重点介绍一下自定义孔径的用法&#xff0c;主要是为了对软件的运用更为了解&#xff0c;并不针对某…

图说设计模式:单例模式

更多C学习笔记&#xff0c;关注 wx公众号&#xff1a;cpp读书笔记 5. 单例模式 单例模式 模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结 5.1. 模式动机 对于系统中的某些类来说&#xff0c;只有一个实例很重要&#xff0c;例如…

Linux:多线程的操作

多线程操作 进程与线程线程的创建 create_pthread创建线程池给线程传入对象的指针 线程等待 pthread_join退出线程 pthread_exit线程等待参数 retval 与 线程退出参数 retval 线程中断 pthread_cancel获取线程编号 pthread_self线程分离 pthread_detach 进程与线程 进程是资源…

【学习笔记】Kali

纯个人总结&#xff0c;有什么不对的地方欢迎指正。 笔记根据个人学习进度持续更新… 一、 认识Kali 基础了解 Kali是一套基于Debian发行版的一款操作系统。&#xff08;这里讲一个误区&#xff0c;我以前一直以为kali就属于deepin下的操作系统&#xff0c;但是我知道deepin是…

记录一下:vue3+antd-vue a-form包含a-table实现表格行内校验, 清除 指定行 指定字段 的校验

问题描述下&#xff1a; 目标VLAN值可以输入&#xff0c; 也可以点击后面的按钮进行弹窗选择。由于检验原因&#xff0c;光标失焦但是没有填写就会校验爆红&#xff0c;然后点击选择之后由于没有失焦过程没有触发校验&#xff0c;依然还是红的。这个时候就需要清除 目标VLAN值 …

企业跨境文件传输的核心痛点,怎样保证稳定可靠的传输性能?

随着经济和国际贸易的发展&#xff0c;企业跨境文件传输日趋频繁&#xff0c;多个行业均存在高频且大量的跨境文件传输需求&#xff1a; 跨境电子商务&#xff1a; 跨境电商平台需要进行跨国的订单、支付和物流信息的传输&#xff0c;以便顺利完成交易和配送。涉及跨国企业的内…

Python爬虫实战(实战篇)—18获取【小红书】首页信息写入Excel(仅用于学习-附完整版代码)

文章目录 专栏导读背景1、分析首页页面2、分析获取信息2-1,获取:笔记类型2-2,获取:标题2-3,获取:用户信息2-4,获取:用户ID2-5,获取:用户头像2-6,获取:文章连接完整代码总结专栏导读 文章名称链接Python爬虫实战(实战篇)—16获取【百度热搜】数据—写入Ecel(附完整…

一篇文章看懂Redission原理

文章目录 ☃️可重入锁原理☃️锁重试和WatchDog机制☃️MutiLock原理 上一篇文章讲解了 Rediision的使用 ,这篇文章讲解其原理 ☃️可重入锁原理 在Lock锁中&#xff0c;他是借助于底层的一个voaltile的一个state变量来记录重入的状态的&#xff0c;比如当前没有人持有这把锁…

Vue配置项之生命周期(组件生命周期)

Lifecycle Hooks 首先说明一下&#xff0c;本人是前端小学生级别的菜鸡&#xff0c;吐槽的话请口下留情&#xff0c;在评论区指出错误或者补充不足&#xff0c;我会很喜欢&#xff0c;互喷不会进步&#xff0c;相互指点才会。。。。谢谢大家啦 目录 Lifecycle Hooks 目录创建…

指针的深入理解(3)(包括数组名的理解、一维数组传参的本质以及指针数组的相关知识及使用)

文章目录 1 数组名的理解2 使用指针访问数组3 一维数组传参的本质4 指针数组5 指针数组的使用 1 数组名的理解 当我们运行以下代码&#xff1a; #include <stdio.h> int main() {int arr[10] { 0 };printf("%p\n", &arr[0]);printf("%p\n", a…

踩坑!被node-sass折磨的一天

文章目录 被node-sass折磨的一天折磨过程了解原因注意事项 被node-sass折磨的一天 折磨过程 起因是要开发一个老项目&#xff0c;照常拉代码、下依赖、启动三步走 依赖开始下载不对了&#xff0c;以为是node版本问题&#xff0c;寻找node-sass对应的node版本 利用nvm&#…

IP地址乱成一团?用Shell一键搞定!

在日常的运维工作中&#xff0c;我们经常需要对各种数据进行处理和分析&#xff0c;其中包括对IP地址的管理和排序。排序后的IP地址列表可以帮助我们更好地进行日志分析、网络流量监控和故障排除。 本文将模拟一个运维场景&#xff0c;展示如何对IP地址进行排序&#xff0c;并探…

云原生应用开发培训,开启云计算时代的新征程

在云计算时代&#xff0c;云原生应用开发技术已经成为IT领域的热门话题。如果您想要转型至云原生领域&#xff0c;我们的云原生应用开发培训将帮助您开启新征程。 我们的课程内容涵盖了云原生技术的基础概念、容器技术、微服务架构、持续集成与持续发布&#xff08;CI/CD&#…

传统零售运营模式有什么缺点?新零售模式下的运营思维好在哪里?

随着科技的进步、消费者需求的多样化以及市场竞争的加剧&#xff0c;传统零售模式已逐渐难以满足现代消费者对购物体验的期待。新零售&#xff0c;作为一个创新的概念&#xff0c;应运而生&#xff0c;它不仅代表着零售行业的未来趋势&#xff0c;更是一种全新的商业思维和运营…

pytest中一个场景测试的demo

注意点1&#xff1a; allure.severity 是一个装饰器&#xff0c;用于设置测试用例的严重性级别。 allure.severity_level.CRITICAL 是Allure提供的严重性级别之一&#xff0c;表示这个测试用例极为重要。allure.severity_level.BLOCKER&#xff1a;阻塞级别的问题&#xff0c…

python发送http请求

python有个内置模块发送请求urllib的request的 openurl()方法&#xff0c;打开一个链接&#xff0c;就是发送一个请求&#xff0c;&#xff0c; 因为内置模块发请求不是那么好用&#xff0c;一般都会使用第三方的请求包&#xff0c;requests模块&#xff0c; 请求头 User-Ag…

Unity基础(一)unity的下载与安装

目录 一:下载与安装 1.官网下载地址 2.推荐直接下载UnityHub 3.选择编辑器版本(推荐长期支持版) 4.在UnityHub安装选择相应的模块 二:创建项目 简介: Unity 是一款广泛应用的跨平台游戏开发引擎。 它具有以下显著特点&#xff1a; 强大的跨平台能力&#xff1a;能将开发的游…