2014-12-22 11 views
2

У меня есть глубоко вложенный массив PHP, который я сохранил в качестве документа в Монго и в конечный итоге с этой структурой:mongodb: обновить вложенный документ массивом?

{ 
"_id" : "...", 
"categ1" : { 
    "aaa" : 112.6736, 
    "bbb" : 83.9137, 
    "ccc" : 80.3322, 
    ..... 
    }, 
"categ2" : { 
    "xxx" : 1, 
    "yyy" : 22, 
    "zzz" : 7, 
    "subcateg" : { 
     "sub1" : 1, 
     "sub2" : 22 
     } 
    } 
} 

Теперь у меня есть еще один массив с аналогичной структурой, и я хотел бы увеличить значение запись, по значениям массива модификаторов:

$modifier=array(
    'categ1' => array(
      'aaa' => 3, 
      'bbb' => -1, 
      'mmm' => 11 
     ), 
    'categ2' => array(
      'yyy' => -2, 
      'subcateg' => array(
       'sub1' => -1 
      ) 
     ) 
    ); 

Как я могу увеличить значения внутри документа по значениям $ модификатора все сразу, в одном запросе и остроумия hout загружает весь документ?

Я просмотрел веб-страницы, но не смог найти информацию об этом. Кроме того, я довольно новичок в Mongo. Благодаря

+0

Что вы имели в виду увеличения значения записи? Вы имели в виду замену модификатором – Abhi

+0

, что я имею в виду: мне нужно увеличить значения aaa, bbb, xxx теми, которые указаны в модификаторе [aaa, bbb ....] – Mixxed

ответ

1

Вы можете получить свой $modifier массив выглядеть следующим образом:

$modifier = array(
    'categ1.aaa' => 3, 
    'categ1.bbb' => -1, 
    'categ1.mmm' => 11, 
    'categ2.yyy' => -2, 
    'categ2.subcateg.sub1' => -1 
) 

Link for how to get that.

Тогда вы должны быть в состоянии просто использовать:

$col->update(
    array("_id" => "..."), 
    array('$inc' => $modifier), 
    array("upsert" => true) 
); 
+0

большое спасибо. Я попробовал, и он работает блестяще :) – Mixxed

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