当前位置: 首页 > 知识库问答 >
问题:

更新MongoDB中的特定子文档:

长孙鸿波
2023-03-14

在我的MongoDB中,我有文档,如下所示。如何更新内部文档结构中的文档:<code>〔{1},〔{2}〕,〔{3}〕、〔{4}〕</code>。

例如:子子文档中的子文档具有objectId:1objectId:2以及 objectId:4

[{ _id : ObjectId("1")}],
[{ _id : ObjectId("2")}], 
[{ _id : ObjectId("3")}],
[{ _id : ObjectId("4")}]


"Child": [{
    "_id": ObjectId("1"),
     Name: "Raghu",
     Age : 21,

    "subchild": [{
            "_id": ObjectId("2"),
            "Name": "Yuva",
             Age : 23,
        },
        [{
                "_id": ObjectId("3"),
                 Name: "Ravi",
                 Age : 25
            }
        ],
        [{
                 "_id": ObjectId("4"),
                "Name": "Ram",
                  Age : 27
            }
        ]
    ],
}

]

如何更新上面下面的子文档特定_Id: ObjectId("3")和_Id: ObjectId("4")Ex: [{ "_id": ObjectId("4"),"Name":"Ram",}]

我在 C# 中尝试过这样的:

          I updated ObjectId : 1 like  Example   child.$.Subchild.0.Name="Raghu" 
        But not Updated ObjectId : 4 like  Example   child.$.Subchild.3.Name="Ram"           

    MongoServerSettings settings = new MongoServerSettings();
        settings.Server = new MongoServerAddress("127.1.1.1", 27017);
        MongoServer servers = new MongoServer(settings);
        var db = servers.GetDatabase("StudentDB");
        MongoCollection<Student> pax;
        pax = db.GetCollection<Student>("StudentDetails");
        IMongoQuery queryEdit = Query.EQ("Child.subchild._id", new ObjectId("4"));
        var updateValues = new List<UpdateBuilder>();
        { updateValues.Add(Update.Set("child.$.Subchild.3.Name", "Ramu")); }
        updateValues.Add(Update.Set("child.$.subchild.3.Age", 27));
        IMongoUpdate update = Update.Combine(updateValues);  
        SafeModeResult sm = pax.Update(queryEdit, update, UpdateFlags.None, SafeMode.True);

共有1个答案

段干麒
2023-03-14

孩子。$。Sub的孩子。0. Name="Raghu"不需要对第一个数组游标的引用,需要对第二个游标的引用孩子。子孩子。$。名称="Raghu"对于MongoDB来说,不要更新两个引用"$"

db.foo.update({_id:ObjectId(...),"child.Subchild.Name":"Ram"},{$set:{child.Subchild.$.Name="Raghu"}});
 类似资料:
  • 问题内容: 我的文档中具有以下结构: 我想更新 someField 和 someField2, 但仅更新数组中的一项,与 _arrayId 匹配的 项 (例如;并且仅针对此文档(例如)),而不更新其他项。 该 arrayIds 是不是唯一的,这就是为什么我需要它是针对特定文档的文档。如果要为数组中存在的每个文档更新该值,则可以使用,但这不是我想要的。 我试图在Java中完成此操作,但也可以使用命令

  • 我有一个深度嵌套的文档结构,如下所示: 我正在尝试更新集合以插入新配置,如下所示: 我正在mongo(Python)中尝试类似的内容: 但是,我得到了“如果没有包含数组的相应查询字段,则无法应用位置运算符”错误。在mongo这样做的正确方式是什么?这是mongo v2。4.1.

  • 主要内容:update() 方法,save() 方法在 MongoDB 中,可以使用 update() 和 save() 方法来更新集合中的文档。其中 update() 方法可以更新现有文档中的值,而 save() 方法则可以使用传入文档来替换已有文档。 update() 方法 update() 方法用于更新现有文档中的值,其语法格式如下: db.collection_name.update(     <query>,     <update>,

  • 我正在运行Mongodb 3.6。以下是我的文档结构,它存储产品列表的每月费率信息: 对相关联的计费卡的任何更改,都会将更新传播到“费率”数组中的多个子文档。 以下是需要应用于上述文档的更改 有没有一种方法可以在数组速率下更新子文档,而无需将整个文档加载到内存中,以便合并更改?假设我的子文档标识符是,和。 我可以使用

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

  • 我的mongoDB记录就像在这个链接更新嵌套数组mongob和示例记录如下,想要更新嵌套文档“参数”数组中的一个字段,前提是它满足一些条件(_id:“04”,操作。_id:“100”和operations.parameters.pid:“012”),此更新查询UPDATES错误嵌套记录(operations.parameters.pid:“011”),请帮助我哪里出错了: 我的更新查询如下: 我使