如果在单个查询中 $pull 之后数组计数为零,mongodb 会删除文档

2023-12-28

我有一个要求,我的comments架构如下所示

{
  "_id": 1,
  "comments": [
    { "userId": "123", "comment": "nice" },
    { "userId": "124", "comment": "super"}
  ]
}

我想根据以下内容提取元素userId场地。 我正在执行以下查询

comments.update({},{$pull:{comments:{userId:"123"}}})

我的要求是,如果在拉操作符之后数组长度变为零,我需要出于某种原因删除整个文档。是否有办法在单个查询中执行此操作?

PS:我使用的是mongodb驱动程序,而不是mongoose


如果我没看错你的问题,那么之后$pull,如果comments数组为空(零长度),然后删除文档({ _id: '', comments: [] }).

这应该删除所有文件comments数组存在且为空:

comments.remove({ comments: { $exists: true, $size: 0 } })

我有类似的要求并使用了这个(使用mongoose尽管):

await Attributes.update({}, { $pull: { values: { id: { $in: valueIds } } } }, { multi: true })
await Attributes.remove({ values: { $exists: true, $size: 0 } })

不确定是否可以通过一次操作来完成此操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果在单个查询中 $pull 之后数组计数为零,mongodb 会删除文档 的相关文章

随机推荐

  • 如何将不同的 DataFrame 组合成一个分组条形图

    我正在尝试复制答案this https stackoverflow com questions 65052443 creating a grouped bar plot with seaborn问题 我看不出我在做什么有什么不同 我的输出
  • 无法从 Linux 连接到 SQL Server

    我正在尝试连接到 CentOS 5 8 上的 SQL Server 2008 我正在使用 unixODBC 2 3 0 和 SQL Server ODBC 驱动程序 www microsoft com en us download deta
  • 链接描述文件中的 KEEP 是什么意思?

    The LD手册 http ftp gnu org old gnu Manuals ld 2 9 1 html mono ld html SEC2没有解释什么KEEP命令执行 下面是第三方链接描述文件的一个片段 其特点是KEEP 什么是KE
  • 在php中组合两个(或更多..)多维数组

    我有一个使用不同参数运行多次的查询 我正在使用 xml 解析器将结果返回给 jQuery 我似乎无法找到一种方法来组合第一个 节点 上的结果而不覆盖第一个条目 简化的代码示例 temp1 returnArray 0 temp2 return
  • 如何像 DevTools 那样突出显示 Chrome 扩展中的元素?

    我有兴趣创建一个 Chrome 扩展程序 它列出了网页上菜单中具有 id 属性的所有元素 然后 当用户单击菜单中的元素时 网页上相应的元素就会突出显示 当您右键单击并检查某个元素时 我看到 Chrome 开发工具会突出显示该元素 我很好奇是
  • uint32_t 和 uint8_t[4] 未定义行为的联合? [复制]

    这个问题在这里已经有答案了 在评论中这个答案 https stackoverflow com a 8568531 1025391据说使用如下联合将整数分割成字节将是未定义的行为 该位置给出的代码与此相似但不完全相同 如果我更改了代码的未定义
  • 使用 SIS 执行 postgres db init 的批处理文件给出权限被拒绝

    跟随我的上一个问题 https stackoverflow com questions 30924913 how to install postgres with nsis with all parameters我现在尝试通过 NSIS 代
  • 将 StackNavigator 与 TabNavigator 集成

    如何组合 StackNavigator 和 TabNavigator 我的以下代码有效 索引 android js import React Component from react import AppRegistry Text View
  • SQL Server 错误:“SQL Server 子查询返回超过 1 个值”

    子查询返回超过 1 个值 当子查询跟在 gt 后面或子查询用作表达式时 这是不允许的 我在调试以下代码时收到此有线错误消息 WHEN NOT EXISTS SELECT 1 FROM defs WITH NOLOCK WHERE defau
  • Neo4J 数据库大小/缩小

    我们有一个包含约 1000 万个节点和约 3 亿个关系的 Neo4j 数据库 数据库已增长至约 80 Gig 日常工作会删除旧数据并添加新数据 因此节点和关系的大约数量保持相当恒定 然而 db 文件的物理文件大小不断增长 例如 relati
  • 具有多核 CPU 的 JAX pmap

    使用多核CPU的正确方法是什么jax pmap 以下示例在 CPU 核心后端上为 SPMD 创建环境变量 测试 JAX 是否识别设备 并尝试设备锁定 import os os environ XLA FLAGS xla force host
  • 使用 XUnit 进行 .Net Core DynamodDB 单元测试

    使用C net core 2 0 dynamo db 我有我的 Web api 它与我的 dynamo db 数据库交互 具有 Get 和 Post 方法 方法示例 HttpGet api data public async Task
  • 使用 JAXB 编译多个包含同一元素的重复定义的 XSD

    问题 如何使 xjc Jaxb 为同一命名空间中包含重复元素定义的多个模式生成正确的 java 类 信息 我有三个 xsd 模式 A B 和 C 它们都具有相同的目标命名空间 它们都是给我的 3 个 shemas 我无论如何都不允许以任何方
  • 如何使用 setBorder 和 JFrame 在 Java 中为矩形添加边框

    我正在尝试添加边框Rectangle元素 由于某种原因它无法工作 是否与JFrame 我可以设置我的整个JFrame有边界 但找不到setBorder和我的矩形 这是我的代码 package trivia import java awt C
  • 在 Mocha 测试中使用 for 循环

    我是摩卡新手 我想尝试使用 for 循环来创建测试用例 我想测试我制作的一个函数 该函数接受标准 12 小时时间的输入 并将其输出为 24 小时军用时间 这就是它的样子 exports main function time var hr p
  • 相邻的 svg:多边形边不相交

    我正在使用彼此相邻的多边形绘制条形图 如下所示 如果仔细观察 每个多边形之间都有空白 放大 我正在努力阻止这种情况发生 我发现了 SVGshape rendering https developer mozilla org en US do
  • JPA CascadeType Persist 不适用于 Spring 数据

    我有两个实体 用户 Data EqualsAndHashCode exclude id Entity Table name users public class User Id SequenceGenerator name user id
  • 合并TFS中的多个文件

    我们使用 TFS 作为我们软件的版本控制系统 目前该软件在两个独立的分支中有两个版本 分支 版本1 0 和分支 版本2 0 版本 1 0 中的每个修复都必须合并到 版本 2 0 中 我从要合并的文件的上下文菜单中手动合并 我的问题是 某些修
  • 如何在 Android 中将 JSON ARRAY 数据发布到服务器

    我想将以下 JSON 数据发送到服务器并读取 android 中的响应 下面是 Json 数据 class OrderItemListDto orderItemList class OrderItemDto orderId 24 itemI
  • 如果在单个查询中 $pull 之后数组计数为零,mongodb 会删除文档

    我有一个要求 我的comments架构如下所示 id 1 comments userId 123 comment nice userId 124 comment super 我想根据以下内容提取元素userId场地 我正在执行以下查询 co