【问题标题】:Complex Updates in MongoDb 2.6MongoDb 2.6 中的复杂更新
【发布时间】:2013-11-26 18:23:08
【问题描述】:

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, "a.b.id": 3, "a.b.c.id":4 } 或者可能正在使用 $elemMatch ?

要求

需要一个准确的更新查询来将d 更新为 d:["x","y","z"] ;

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

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

【问题讨论】:

  • 你为什么要第二次发布这个问题。即使人们试图关闭它?
  • @naveen 您可能应该删除您之前的相同问题,但有 0 个答案...
  • 好的,我已经关闭了副本..不知道我是怎么得到的..可能是因为我真的希望这个功能进入 MongoDb,据我说这是一个严重的不完整功能在 mongodb 2.4/2.2 中更新文档

标签: mongodb


【解决方案1】:

您可以使用$elemMatch,如下所示。

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

【讨论】:

  • 更新部分将如何将“$”替换为索引.. 你能给我确切的更新查询以将d 更新为 d:["x"," y","z"] ; $push "z" 到匹配的 d:[]
  • 所以我认为问题仍未解决
猜你喜欢
  • 2014-05-22
  • 2016-08-18
  • 2014-04-09
  • 1970-01-01
  • 2016-06-28
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
相关资源
最近更新 更多