移除嵌入对象时 pullAll

2023-12-20

我有包含以下文档的数据库:

> db.bios.find({"name.first":"James"}).pretty()
{
        "_id" : 9,
        "name" : {
                "first" : "James",
                "last" : "Gosling"
        },
        "birth" : ISODate("1955-05-19T04:00:00Z"),
        "contribs" : [
                "Java",
                "C",
                "Scala",
                "UNIX"
        ],
        "awards" : [
                {
                        "award" : "The Economist Innovation Award",
                        "year" : 2002,
                        "by" : "The Economist"
                },
                {
                        "award" : "Officer of the Order of Canada",
                        "year" : 2007,
                        "by" : "Canada"
                },
                {
                        "award" : "nobel",
                        "by" : "Stockholm"
                },
                {
                        "award" : "nobel2",
                        "by" : "Stockholm"
                },
                {
                        "award" : "oscar",
                        "year" : 2015,
                        "by" : "Hollywood"
                }
        ]
}

我正在尝试编写查询以从奖项数组中删除“斯德哥尔摩”或“好莱坞”颁发的奖项对象,但以下查询不起作用:

> db.bios.update({"name.first":"James"}, {$pullAll:{"awards.by":["Stockholm","Hollywood"]}})
WriteResult({
        "nMatched" : 0,
        "nUpserted" : 0,
        "nModified" : 0,
        "writeError" : {
                "code" : 16837,
                "errmsg" : "cannot use the part (awards of awards.by) to travers
e the element ({awards: [ { award: \"The Economist Innovation Award\", year: 200
2.0, by: \"The Economist\" }, { award: \"Officer of the Order of Canada\", year:
 2007.0, by: \"Canada\" }, { award: \"nobel\", by: \"Stockholm\" }, { award: \"n
obel2\", by: \"Stockholm\" }, { award: \"oscar\", year: 2015.0, by: \"Hollywood\
" } ]})"
        }
})
>

类似的查询适用于从 contribs 数组中删除项目:

> db.bios.update({"name.first":"James"}, {$pullAll:{"contribs":["Java","Fortran"
]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

所以这里的问题似乎在于我正在处理嵌入对象。

我很感激你的帮助。

Thanks!


The $pullAll http://docs.mongodb.org/manual/reference/operator/update/pullAll/运算符实际上是一个“特殊情况”快捷方式,适用于仅包含值的数组,例如您的替代情况。

你真正想要的是$pull http://docs.mongodb.org/manual/reference/operator/update/pull/它的参数是对数组中包含的文档的“查询”。所以你的清单就变成了一个论据$in http://docs.mongodb.org/manual/reference/operator/query/in/:

db.bios.update(
   { "name.first": "James" },
   { 
      "$pull": { 
         "awards": { "by": { "$in": ["Stockholm", "Hollywood"] } } 
      } 
   }
)

所以在你的另一个例子中,更长的形式$pullAll将会:

db.bios.update(
   { "name.first": "James" },
   {
       "$pull": { "contribs": { "$in": ["Java","UNIX"] } }
   }
)

相同的东西,但只是“手写”形式。

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

移除嵌入对象时 pullAll 的相关文章

随机推荐

  • 将模板与 HTML 自定义元素结合使用

    我刚刚开始学习 HTML 自定义元素 通过阅读一系列介绍 教程和文档 我想我已经很好地掌握了它的工作原理 但我对正确使用或不使用的方法有一个哲学问题这
  • MVC 4 中的部分实体类未显示数据注释

    我已经看到了许多关于如何通过部分类向通过实体框架生成的类添加元数据注释的解释 数据库优先 有人可以告诉我为什么这些新的显示值没有显示在我的视图中吗 这两个都是与我的实体框架生成的类相同的命名空间的一部分 MetadataType typeo
  • 为什么 pip 在我的虚拟环境之外安装软件包?

    在做了虚拟环境的来源之后我尝试 pip install U no deps django social auth 它返回 OSError Errno 13 Permission denied usr local lib python2 6
  • 如何确保 Angular 服务构造函数中的异步初始化完成?

    请专家告诉我 在调用类中的其他函数时 如何确保服务构造函数中的异步初始化完成 constructor var sock new SockJS this chatUrl this stompClient Stomp over sock thi
  • NASM - 如何创建结构指针数组并访问它们

    所以我的问题是这样的 我有一个名为顶点的结构 struc vertex x resq 1 y resq 1 z resq 1 endstruc 我想创建一个指向由该定义组成的结构的指针数组 就像加载顶点表单文件并将它们保存在结构中和数组中的
  • 将图像从 URL 上传到 Firebase 存储

    我想知道如何通过 URL 而不是输入 例如 将文件上传到 Firebase 的存储中 我正在从网站上抓取图像并检索它们的 URL 我想通过 foreach 语句传递这些 URL 并将它们上传到 Firebase 的存储 现在 我有 fire
  • RXJS 拖放

    这个问题与 RXJS 有关 我正在尝试调整 github 中的拖放示例以适用于一类 div 而不仅仅是单个元素 ID https github com Reactive Extensions RxJS blob master example
  • 标记实例变量@private

    我注意到苹果的很多界面都使用 private在它们的实例变量声明之前 这有什么好的设计理由吗 我应该这样做吗 私有实例变量用于将接口与实现分开 在 Objective C 中 由于类声明must显示所有实例变量 需要有一种方法来防止子类访问
  • 实体框架中 IMigrationMetadata 接口的用途和语义

    我试图找出 EF 中 System Data Entity Migrations Infrastruct IMigrationMetadata 接口的语义是什么 我知道它用于管理和应用数据库迁移 但我找不到有关它的详细信息 具体来说我想知道
  • 安卓键盘记录器

    我正在为 Android 编写一个用于考试的应用程序 该应用程序的功能之一是键盘记录器 它可以捕获用户键入的所有内容 我不明白如何实现键盘记录器的功能 如果有可能捕获用户输入的所有内容 不幸的是我在网络中发现了很少的代码 谁能帮我 感谢您的
  • 如何在 QML 中的 ListView 中绑定到来自委托组件的信号

    假设我有一个ListView可点击的委托组件 或GridView or Repeater 这些委托组件需要在触发时发出信号以及自定义数据 该信号可以由父组件拾取ListView 如何实现这种信号结合 例如以下代码是我的尝试 但我不知道如何绑
  • Unity 5.1 动画控制器不转换

    我创建了一个Animator Controller 称为Player 并将其分配给Animator我的人形化身的领域 以及具有适当过渡的简单动画状态 请参阅所附的两张图片 我已将包含以下代码的脚本附加到我的头像游戏对象 但我想知道我遗漏了什
  • 跨子域使用localStorage

    我将 cookie 替换为本地存储 http www smashingmagazine com 2010 10 11 local storage and how to use it 在可以支持它的浏览器上 除了 IE 之外的任何浏览器 问题
  • 如何从一个 Visual Studio 项目创建两个不同的可执行文件

    我有一个主要可执行文件 它根据配置文件中保存的设置运行 我希望能够通过不同的可执行文件更改配置文件中的设置 有没有一种简单的方法可以在一个 Windows 窗体项目中构建这两个不同的可执行文件 这意味着当我按构建时 会在同一解决方案文件夹中
  • 阶乘法导致错误

    我正在尝试获取数字的阶乘值66 但是我的方法给了我一个输出0 但每当我尝试获取阶乘5 这给我带来了输出120 谁能告诉我为什么吗 public static int factorial int n if n 1 return n retur
  • 如何在 Python 中随机分布 N 个质量,使它们遵循 Plummer 密度分布

    我正在用Python工作 我有N恒星 每一颗都有一个太阳质量M 0 我想将这些星星随机分布在一定半径的体积中R 使得密度分布遵循普鲁默模型 http en wikipedia org wiki Plummer model 由以下公式给出 我
  • 使用 databricks-connect 时打开 dbfs 上的文件

    我正在使用 databricks connect 将本地 PyCharm IDE 连接到 Azure Databricks 群集 在我尝试在没有 Spark 上下文的情况下访问文件之前 这一切都工作得很好 例如 dbutils fs put
  • 如何将 io.Reader 转换为 io.ReadCloser? [复制]

    这个问题在这里已经有答案了 我有一个io Reader不需要关闭 stringReader strings NewReader shiny 我想将它传递给接收的方法io ReadCloser func readAndClose source
  • CPU 未充分利用。由于阻塞 I/O?

    我试图找到未充分利用 CPU 的 C 服务器应用程序的瓶颈所在 我认为这可能是由于磁盘 I O 性能不佳造成的 与应用程序本身无关 但我很难从这个假设中得出事实 应用程序从本地 MSMQ 队列读取消息 对每条消息进行一些处理 并在处理消息后
  • 移除嵌入对象时 pullAll

    我有包含以下文档的数据库 gt db bios find name first James pretty id 9 name first James last Gosling birth ISODate 1955 05 19T04 00 0