在Mongo DB嵌套数组中更新对象值

时间:2019-06-07 11:17:38

标签: mongodb-query

我有一个包含嵌套数组的文档。我需要更新其位置是动态的嵌套数组对象的值。我需要将locators:id值:'obj1'更新为值:'obj2'。但是问题是这些定位器的位置不是静态的,它们将始终是动态的

App=EntityFramework"

我尝试通过硬编码这样的对象位置

App=EntityFramework;

请告诉我如何解决此问题。谢谢

预期投入

<add name="DefaultConnection" connectionString="data source=(local);initial catalog=NamSdb;persist security info=True;user id=sa;password=sa;MultipleActiveResultSets=True;App=EntityFramework;" providerName="System.Data.SqlClient" />

1 个答案:

答案 0 :(得分:1)

我从问题中了解。

obj1的位置不固定。

(0-1-2)数组顺序,您不想写。

db.objectRepository.update(
   { "objectName.0.attributes.value" : "obj1" },
   { $set : { "objectName.0.attributes.$.value" : "obj2222" }},
   {
     multi: false,
   }
)

query

result

“ objectName.0”。您可以在其中进行同样的操作。


db.objectRepository.update(
    { },
    { $set : { "objectName.$[element].attributes.$[velement].value" : "aa change" } },
    { 
        multi: false,
        arrayFilters : [
            { "element" : { "objectName.objectName" : "demoPage" }},
            { "velement" : { "objectName.attributes.value" : "aa" }}        
        ]
    }
)

这正是您想要的吗?

https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/

即使这不是您想要的问题的答案,也绝对在此页面上。