2013-11-26 5 views
0

https://stackoverflow.com/questions/19154639/mongodb-complex-query-on-nested-arrayкомплекс Обновления в MongoDb 2.6

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: [ "х", "у", "г"], где часть запроса может быть .. {ID: 1, "a.id": 2, " abid ": 3," abcid ": 4} или может использоваться $ elemMatch?

ТРЕБОВАНИЯ

Необходим точный запрос обновления для обновления d к D: [ "х", "Y", "г"];

$ addToSet или любой другой оператор, чтобы добавить «г» на согласованный г: []

ПРОБЛЕМА: А что там будет в части обновления, как «$» будет заменен на индекс ..

+0

возможно дубликат [MongoDB сложного запроса на вложенный массив] (http://stackoverflow.com/questions/19154639/mongodb-complex-query-on-nested-array) –

+0

Почему вы проводкой вопрос для второй раз. Даже если люди пытались его закрыть? –

+0

@naveen Вы должны, вероятно, удалить свой более ранний идентичный вопрос с 0 ответами ... – hyde

ответ

0

Вы можете использовать $elemMatch следующим образом.

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

И что будет в части обновления, как «$» будет заменен на индекс. Можете ли вы дать мне точный запрос обновления для обновления 'd' to d: [" x "," y "," z "]; $ нажмите «z» на согласованный d: [] – andNn

+0

, поэтому я предполагаю, что проблема все еще не решена – andNn

Смежные вопросы