从嵌套对象数组中删除对象 mongodb

2023-12-03

我收集了包含志愿者信息的集合,并将志愿者列为对象数组。我可以显示每个志愿者的所有班次,但从数组中删除一个对我来说很困难:

样本数据:

"_id" : ObjectId("59180305c19dbaa4ecd9ee59"),
    "where" : "Merchandise tent",
    "description" : "Sell gear at the merchandise tent.",
    "shifts" : [
            {
                    "dateNeeded" : ISODate("2017-06-23T00:00:00Z"),
                    "timeslot" : "8:00 - NOON",
                    "needed" : 2,
                    "_id" : ObjectId("591807546a71c3a57d1a2105"),
                    "volunteers" : [
                            {
                                    "fullname" : "Mary Mack",
                                    "phone" : "1234567890",
                                    "email" : "[email protected]",
                                    "_id" : ObjectId("591ce45bc7e8a8c7b742474c")
                            }
                    ]
            },

我可用的数据是: _id,哪里,shifts.timeslot,shifts.dateNeeded,志愿者.email

有人能帮我吗?假设玛丽·麦克 (Mary Mack) 不想参加商品帐篷的中午 8 点轮班。她也可能列在其他班次下,但我们只想将她从该班次中删除。


您可以通过指定与“文档”匹配的内容,然后指定所需的“shifts”数组条目作为查询表达式来完成此操作.update()。然后应用位置性的$操作员对于匹配的数组索引$pull:

db.collection.update(
 { "_id": ObjectId("59180305c19dbaa4ecd9ee59"), "shifts.timeslot": "8:00 - NOON" },
 { "$pull": { "shifts.$.volunteers": { "fullname": "Mary Mack" } } }
)

在这种情况下这是可以的,因为您只是尝试“匹配”嵌套结构中的“外部”数组和$pull有自己的查询参数来标识要删除的数组条目。

不过,您确实应该小心使用“嵌套数组”。正如同时$pull像这样的操作有效,更新“内部”数组实际上是不可能的,因为位置性的$操作员只会匹配满足条件的“第一个”元素。因此,您在多个班次中的“Mary Mack”示例将仅在找到的第一个“班次”数组条目中匹配。

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

从嵌套对象数组中删除对象 mongodb 的相关文章

随机推荐

  • 在 git 中创建别名

    我对 Git 很陌生 我正在尝试单步执行存储库中的提交 我没有为每次提交复制并粘贴 SHA 而是使用此方法获取 HEAD 之后的下一次提交 git checkout git rev list HEAD master tail n 1 这工作
  • 在 Flutter 中按降序排列 Firestore 文档?

    我想根据 Firestore 文档上传的时间戳按降序排列 我的意思是 当我上传新照片时 它应该出现在我制作的图像网格的顶部 这里我使用了 orderBy 并为参数降序传递了 true get images 方法中代码的底部 默认情况下它是
  • 如何裁剪非闭合几何体

    Intro 我在实现剪辑时注意到一个问题 请参阅this 看起来 UIElement Clip 仍然渲染不可见的部分 渲染相对较小的几何体 线条仅fill1920x1200区域 2000垂直线 需要很多时间 使用时Clip and movi
  • Pyspark DataFrameWriter jdbc 函数的忽略选项是否忽略整个事务或仅忽略违规行?

    皮斯帕克DataFrameWriter类有一个jdbc功能用于将数据帧写入 sql 这个函数有一个 ignore文档说的选项将 如果数据已经存在 则静默忽略此操作 但它会忽略整个事务 还是只会忽略插入重复的行 如果我结合起来会怎样 igno
  • android 中的 android:weightSum 是什么,它是如何工作的?

    我想知道 什么是 android weightSum 和布局权重 它们如何工作 添加 superM 和 Jeff 的答案 如果LinearLayout中有2个视图 第一个的layout weight为1 第二个的layout weight为
  • 集合属性应该是只读的

    我正在为我的 WPF MVVM 程序集使用 FxCop 它给了我错误 集合属性应该是只读的 但在我的属性中 我需要 RaisePropertyChangedEvent 现在如果我通过删除其设置部分将属性设置为只读 我如何引发此事件 语法有点
  • Twitter Bootstrap - 选项卡 - URL 不变

    我正在使用 Twitter Bootstrap 及其 选项卡 我有以下代码 ul class nav nav tabs li class active a href add add a li li a href edit edit a li
  • 向 UITableViewController 添加顶部/底部视图?

    在我的故事板中 我有 UITableViewController 它具有自定义类 如何在表格视图的顶部和底部添加 UIView 对象 我是否必须在 UIView 内创建 UITableView 和两个所需的视图 然后手动初始化我的控制器 设
  • 如何使 JScrollPane 中的垂直和水平滚动条居中?

    我有一个 JPanel 其中有一个 JLabel 已添加到 JScrollPane 中 我有一个调用的actionListenerJLabel setIcon file jpg 图像正确显示在 JScrollPane 中并且为全尺寸 滚动条
  • 日期.parse(2/4/2011 9:34:48 AM)

    我的输入将来自变量 Ticket CreationDate 看起来像 2 4 2011 9 34 48 AM 当然会有所不同 理想情况下 我可以按原样传递变量并获得不同的结果 喜欢 knownDateFunc Ticket DateCrea
  • htaccess errordocument 404 并将 url 传递给路径

    如何使用以下命令将 404 d URL 传递到我的 404 html 页面 htaccess 例如 如果我访问无效页面 user 123 RewriteEngine on RewriteCond REQUEST FILENAME f Rew
  • 根据列优先级选择记录

    首先 这个问题的标题很糟糕 但我没有找到更好的方法来描述我的问题 可能有一个非常简单的方法可以做到这一点 但我无法弄清楚 这非常类似于this问题 但我正在 sqlite3 iOS 上运行 所以我怀疑我的选择更加有限 我有一张包含产品记录的
  • PHP mySQL - 你能返回一个带有数字索引的关联数组吗?

    我的数据库类中有这个方法 public function query queryString if this gt connected this gt connectToDb connect to database results mysq
  • PS4 控制器 - 当值为 1 时光标不移动

    我试图编写程序来使用 PS4 控制器控制鼠标 一切正常 我获取数据并且可以相应地移动鼠标 然而 当我将操纵杆固定在任何轴上时 鼠标不会移动 这不仅在我握住它时发生 而且在操纵杆值没有改变时也会发生 有什么办法可以解决这个问题吗 import
  • 为可变参数模板函数中的每个模板类型调用 void 函数?

    我的目标是编写一个简单的通用函数来注册任意 C 类型的转换器 为了简单起见 我将只打印 C 类型名称 我希望能够调用我的通用函数print type name适用于任何类型的函数 包括同时使用多种类型 可变参数 template
  • 如何使用 C# 读取/加载 datagridview 中的文本 (*.txt) 文件值?

    谁能帮我 在这里 我需要在我的 datagridview 中读取 加载文本 txt 文件值 这是我需要加载的示例文本文件 S NO Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 Data9
  • Sphinx 中类链接的缩写名称

    seealso Class class apps business models Department Explanation goes here GNU tar manual Basic Tar Format
  • 如何使用 TXMLDocument 将名称空间前缀添加到每个节点

    我使用 XML 绑定向导创建了 TXMLDocument 的后代 此类生成的文件将在根节点中声明名称空间 并为文档的其余部分创建简单的 未经修饰的节点
  • 带有外语数字字段的 MS Access 数据库

    我有一个 MS Access 2007 数据库 我在哥伦比亚和厄瓜多尔的一些客户遇到了一个问题 我相信还会出现更多问题 他们的编号格式与美国不同 他们使用 小数点 或句点 字符作为百万和千位分隔符 并使用 逗号字符作为小数位 这要么导致类型
  • 从嵌套对象数组中删除对象 mongodb

    我收集了包含志愿者信息的集合 并将志愿者列为对象数组 我可以显示每个志愿者的所有班次 但从数组中删除一个对我来说很困难 样本数据 id ObjectId 59180305c19dbaa4ecd9ee59 where Merchandise