MongoDb 2.6中的复杂更新

时间:2013-11-26 07:55:22

标签: mongodb

https://stackoverflow.com/questions/19154639/mongodb-complex-query-on-nested-array

MongoDB 2.2 - Updating Array Nested Document

使用MongoDb 2.6进行这些更新吗?

详情

我在MongoDb中有一个文件,其结构是这样的.NESTED ARRAY。我想将$ addToSet添加到d:[“x”,“y”]中,使其成为d:[“x”,“y”,“z”]。

我已经尝试过$ elemMatch和$。但它们只能在阵列的单级工作。

{
 id:1,
 a:[
     {
        id:2,
        b:[
            {
                id:3,
                c:[
                    {
                        id:4,
                        d:["x","y"]
                    },
                    {
                        id:5,
                        d:["p","q"]
                    }
                ]
            },
            {
                id:13,
                c:[
                    {
                        id:14,
                        d:["w","q"]
                    },
                    {
                        id:15,
                        d:["i","j"]
                    }
                ]
            }           
        ]   
     }
 ]
} 

获取d的查询是什么:[“x”,“y”,“z”]其中查询部分可以是.. {id:1,“a.id”:2,“abid”: 3,“abcid”:4}或者可能正在使用$ elemMatch?

要求

需要确切的更新查询,以便将d更新为d:[“x”,“y”,“z”];

$ addToSet或任何其他运算符将“z”添加到匹配的d:[]

问题:更新部分将如何将“$”替换为索引......

1 个答案:

答案 0 :(得分:0)

您可以按如下方式使用$elemMatch

{
  a: {
    $elemMatch: {
      id: 2,
      b: {
        $elemMatch: {
          id: 3,
          c: {
            $elemMatch: {
              id: 4
            }
          }
        }
      }
    }
  }
}