在mongoDB中更新嵌套数组文档

时间:2017-09-05 08:16:52

标签: mongodb

我有像

这样的mongo文档
  {
    "_id" : ObjectId("59ad2dbd7549de7c69ef0132"),
    "customerId" : "TELEFONICA",
    "organization" : "TELEFONICA",
    "description" : "",
    "events" : [ 
        {
            "id" : "abandonCartEvent",
            "name" : "Abandoned Cart Event",
            "attributes" : [ 
                {
                    "attrId" : "geoLocation",
                    "attrName" : "Customer Location",
                    "defaultValue" : "London"
                }, 
                {
                    "attrId" : "traits",
                    "attrName" : "Customer Traits",
                    "defaultValue" : "Sports Lover"
                }
            ]
        }, 
        {
            "id" : "resumeEvent",
            "name" : "Resume Event",
            "attributes" : [ 
                {
                    "attrId" : "geoLocation",
                    "attrName" : "Customer Location",
                    "defaultValue" : "London"
                }, 
                {
                    "attrId" : "traits",
                    "attrName" : "Customer Traits",
                    "defaultValue" : "Sports Lover"
                }
            ]
        }, 
       {
            "id" : "cancelEvent",
            "name" : "Cancel Event",
            "attributes" : [ 
                {
                    "attrId" : "geoLocation",
                    "attrName" : "Customer Location",
                    "defaultValue" : "London"
                }, 
                {
                    "attrId" : "traits_",
                    "attrName" : "Customer Traits",
                    "defaultValue" : "Sports Lover"
                }
            ]
        }
    ]
}

我想更新"属性"数组,即我需要修改属性数组的任何一个对象。

有人可以为我提供更新此嵌套文档的解决方案

2 个答案:

答案 0 :(得分:0)

你必须等待下一个版本的mongodb。检查this。 直到那个时候,重新设计你的文档结构,使它有一个数组(不是双嵌套数组)或遍历应用程序级别的第二个数组。

答案 1 :(得分:0)

上面你给出了同样的文件,我提到了输出方案,

  1. 如果您要更新 id:“abandonCartEvent”& attrId:“geoLocation”
  2.   

    更新({“customerId”:“TELEFONICA”,“events.id”:“abandonCartEvent”},{$ set:{“events。 0 .attributes。 0 .attrId“:”CustLocation“}})

    1a上。如果您要更新 attrId:“traits”

      

    update({“customerId”:“TELEFONICA”,“events.id”:“abandonCartEvent”},{$ set:{“events.0.attributes。 1 .attrId”:“ traidstTest“}})

    1. 如果您要更新 ID:“resumeEvent”arrtID
    2.   

      update({“events.id”:“resumeEvent”},{$ set:{“events。 1 .attributes.0.attrId”:“GeoLocationSS”}})

      1. 同样如果您要更新 cancelEvent id
      2.   

        update({“events.id”:“cancelEvent”},{$ set:{“events.2.attributes.0.attrId”:“GeoLocationSTested”}})

        我希望你能理解数组字段的更新。

        如果您有任何疑问,请致电(+ 91-9964058121)

        由于