У меня есть глубоко вложенный массив 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
)
)
);
Как я могу увеличить значения внутри документа на значения модификатора $ все сразу, в одном запросе, а также без загрузки всего документа ?
Я просмотрел сеть, но не смог найти никакой информации по этому вопросу.
Кроме того, я довольно новичок в Монго. Спасибо
Вы можете получить свой $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)
);
Других решений пока нет …