mongodb: обновить вложенный документ массивом?

У меня есть глубоко вложенный массив PHP, который я сохранил как документ в Mongo и в результате получил следующую структуру:

{
"_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
)
)
);

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

Я просмотрел сеть, но не смог найти никакой информации по этому вопросу.
Кроме того, я довольно новичок в Монго. Спасибо

2

Решение

Вы можете получить свой $modifier массив выглядеть так:

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

Ссылка на то, как это получить.

Тогда вы сможете просто использовать:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]