当前位置: 首页 > 面试题库 >

如何更新MongoDB中特定文档的数组内特定嵌入文档的值?

双恩
2023-03-14
问题内容

我的文档中具有以下结构:

{
  _id : ObjectId("43jh4j343j4j"), 
  array : [
            { 
              _arrayId : ObjectId("dsd87dsa9d87s9d7"),
              someField : "something",
              someField2 : "something2"
            },
            { 
              _arrayId : ObjectId("sds9a0d9da0d9sa0"),
              someField : "somethingElse",
              someField2 : "somethingElse2"
            }
   ]
 }

我想更新 someFieldsomeField2, 但仅更新数组中的一项,与 _arrayId 匹配的
(例如_arrayId : ObjectId("dsd87dsa9d87s9d7");并且仅针对此文档(例如_id : ObjectId("43jh4j343j4j"))),而不更新其他项。

arrayIds 是不是唯一的,这就是为什么我需要它是针对特定文档的文档。$ positional operator如果要为数组中存在的每个文档更新该值,则可以使用,但这不是我想要的。

我试图在Java中完成此操作,但也可以使用命令行解决方案。


问题答案:

您仍然可以使用$ positional运算符来完成此操作。但是您需要指定父文档的objectid以及_arrayid过滤器。下面的命令行查询工作正常

db.so.update({_id:ObjectId("4e719eb07f1d878c5cf7333c"),
              "array._arrayId":ObjectId("dsd87dsa9d87s9d7")},
              {$set:{"array.$.someField":"updated"}})


 类似资料:
  • 在我的MongoDB中,我有文档,如下所示。如何更新内部文档结构中的文档:<code>〔{1},〔{2}〕,〔{3}〕、〔{4}〕</code>。 例如:子子文档中的子文档具有和以及 和

  • 本文向大家介绍MongoDB文档中如何过滤特定值,包括了MongoDB文档中如何过滤特定值的使用技巧和注意事项,需要的朋友参考一下 要过滤特定值,请在MongoDB中使用$filter。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是要过滤的查询- 这将产生以下输出-

  • 我需要更新Mongo DB中另一个文档内的数组中的一个文档

  • 本文向大家介绍使用MongoDB查询特定嵌套文档的对象数组,包括了使用MongoDB查询特定嵌套文档的对象数组的使用技巧和注意事项,需要的朋友参考一下 要查询对象数组中的嵌套文档,请使用find()。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是如何查询对象数组以获取特定的嵌套文档- 这将产生以下输出-

  • 将mongodb与pymongo一起使用,我有以下文档: 我想更新示例子文档(这是一个数组元素,因为可能有多个示例)。我有以下代码,但它不工作... 谁能告诉我这个有什么问题吗?

  • 本文向大家介绍使用$ set和location $运算符更新数组中的特定MongoDB文档?,包括了使用$ set和location $运算符更新数组中的特定MongoDB文档?的使用技巧和注意事项,需要的朋友参考一下 要使用$set和positional运算符更新数组中的特定文档,请使用MongoDB 。该基于查询过滤器集合中更新单个文件。 让我们创建一个包含文档的集合- 在方法的帮助下显示集合