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]}

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

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

相关文章

Java多线程面试重点-1

0. 什么是并发&#xff1f;什么是并行&#xff1f; 并发&#xff1a;把时间分成一段一段&#xff0c;每个线程轮流抢占时间段。 如果时间段非常短&#xff0c;线程切换非常快&#xff0c;被称为伪并行。并行&#xff1a;多个线程可以同时运行。 并发与并行造成的影响&#xff…

ARM32开发--IIC软实现

知不足而奋进 望远山而前行 目录 文章目录 前言 开发流程 GD32F4软件I2C初始化 GD32F4软件I2C引脚功能 写操作 读操作 总结 前言 在嵌入式系统开发中&#xff0c;软件实现的I2C通信协议扮演着至关重要的角色。本文将深入探讨如何在GD32F4系列微控制器上实现软件I2C功能…

Springboot配置websocket,https使用 WebSocket 连接

Springboot配置websocket&#xff0c;https使用 WebSocket 连接 提示&#xff1a;本文简单介绍websocket与http的区别及如何在项目中使用websocket&#xff0c;以springboot项目为例 一、http协议与websocket协议区别 WebSocket 一种在单个TCP连接上进行全双工通信的协议。W…

深入浅出 Go 语言的 GPM 模型(Go1.21)

引言 在现代软件开发中&#xff0c;有效地利用并发是提高应用性能和响应速度的关键。随着多核处理器的普及&#xff0c;编程语言和框架如何高效、简便地支持并发编程&#xff0c;成为了软件工程师们评估和选择工具时的一个重要考量。在这方面&#xff0c;Go 语言凭借其创新的并…

动态规划算法设计步骤

1. 定义状态&#xff08;构建记忆表&#xff09;&#xff1a; 首先&#xff0c;需要确定问题的状态。状态可以表示为一个包含所有可能决策的变量的集合。例如&#xff0c;对于一个背包问题&#xff0c;状态可以表示为一个包含所有物品和它们的重量的数组。 2. 初始化&#xff…

Python的Pillow(图像处理库)非常详细的学习笔记

Python的Pillow库是一个非常强大的图像处理库。 安装Pillow库&#xff1a; 在终端或命令行中输入以下命令来安装Pillow&#xff1a; pip install pillow 安装后查看是否安装成功以及当前版本 pip show Pillow 升级库&#xff1a; pip install pillow --upgrade 一些基…

探索Ubuntu:从入门到精通

目录 一、什么是Ubuntu? 1.1 Ubuntu的定义和背景 1.2 Ubuntu的特点 二、安装Ubuntu 2.1 下载Ubuntu安装镜像 2.2 制作启动盘 2.3 安装Ubuntu 三、初步设置和基本操作 3.1 系统更新 3.2 安装必要软件 3.3 设置和管理用户账户 四、文件和目录管理 4.1 文件管理器 …

u-boot(六) - 详细启动流程

一&#xff0c;u-boot启动第一阶段 1&#xff0c;启动流程 ENTRY(_start) //arch/arm/lib/vectors.S ----b resets //arch/arm/cpu/armv7/start.S --------b save_boot_params ------------b save_boot_params_ret //将cpu的工作模式设置为SVC32模式&#xff08;即管理模式&a…

NodeClub:NodeJS构造开源交流社区

NodeClub&#xff1a; 连接每一个想法&#xff0c;NodeClub让社区更生动- 精选真开源&#xff0c;释放新价值。 概览 NodeClub是一个基于Node.js和MongoDB构建的社区系统&#xff0c;专为开发者和社区爱好者设计。它提供了一套完整的社区功能&#xff0c;包括用户管理、内容发…

Mongodb在UPDATE操作中使用$push向数组中插入数据

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

spark mllib 特征学习笔记 (一)

PySpark MLlib 特征处理详解 PySpark MLlib 提供了丰富的特征处理工具&#xff0c;帮助我们进行特征提取、转换和选择。以下是 PySpark MLlib 中常用的特征处理类及其简要介绍。 1. Binarizer Binarizer 是将连续特征二值化的转换器。 from pyspark.ml.feature import Bina…

Postman接口测试工具:全面解析与应用指南

标题&#xff1a;Postman接口测试工具&#xff1a;全面解析与应用指南 在当今的软件开发领域&#xff0c;接口测试是确保软件质量和稳定性的重要环节。而Postman作为一款广泛使用的接口测试工具&#xff0c;以其强大的功能和直观的操作界面赢得了开发者和测试人员的青睐。本文…

qt dll编写和调用

dll编写 新建项目 头文件 #ifndef LIB1_H #define LIB1_H#include "lib1_global.h"class LIB1_EXPORT Lib1 { public:Lib1(); };//要导出的函数&#xff0c;使用extern "C"&#xff0c;否则名称改变将找不到函数extern "C" LIB1_EXPORT int ad…

css引入方式有几种?link和@import有什么区别?

在CSS中&#xff0c;引入外部样式表的方式主要有两种&#xff1a;<link>标签和import规则。 使用<link>标签引入外部样式表&#xff1a; <link rel"stylesheet" href"path/to/style.css">这种方式是在HTML文档的<head>部分或者…

Maven:复制到自定义的目录比如target/libs目录下

拷贝依赖包 mvn dependency:copy-dependencies&#xff0c;默认会拷到项目的 target\dependency 目录&#xff0c;想要复制到自定义的目录比如target/libs目录下&#xff0c;需要在pom.xml文件中添加设置覆盖默认设置&#xff1a; <build> <plugins> <plugin&g…

探索未来边界:前沿技术引领新纪元

目录 引言 一、人工智能与深度学习&#xff1a;智慧生活的引擎 1.医疗应用 2.智能家居 3.自动驾驶 二、量子计算&#xff1a;解锁宇宙的密钥 1.量子比特示意图 2.量子计算机实物图 3.分子模拟应用 三、生物技术&#xff1a;生命科学的革新 1.CRISPR-Cas9基因编辑图 2.合成生…

buuctf----warmup_csaw_2016

进来医院先来一套常规检查 啥保护都没,看大佬说基本栈溢出 CT一看 OK cat flag 更喜欢了 40060D 找到地址 get也来了,稳啦! 0x80-0x40 8 根据上道题的exp from pwn import * ghust remote("node5.buuoj.cn",27229) addr 0x40060D payload bA * 0x40 bB*8…

C++设计模式——Bridge桥接模式

一&#xff0c;桥接模式简介 桥接模式是一种结构型设计模式&#xff0c;用于将抽象与实现分离&#xff0c;这里的"抽象"和"实现"都有可能是接口函数或者类。 桥接模式让抽象与实现之间解耦合&#xff0c;使得开发者可以更关注于实现部分&#xff0c;调用…

[C++] 编译期间生成一个元素等差的std::initializer_list

前因 写编译器的时候需要一个常量英文字母表&#xff0c;懒得26个字母一个个打了&#xff0c;于是搓了个板子。 源代码 // c14 required #include <initializer_list> #include <type_traits>template <typename _Tp, _Tp first_elem, int item_number, type…

具有不确定性感知注意机制的肺结节分割和不确定区域预测| 文献速递-深度学习结合医疗影像疾病诊断与病灶分割

Title 题目 Lung Nodule Segmentation and UncertainRegion Prediction With an Uncertainty-Aware Attention Mechanism 具有不确定性感知注意机制的肺结节分割和不确定区域预测 01 文献速递介绍 肺结节分割在肺癌计算机辅助诊断&#xff08;CAD&#xff09;系统中至关重…