我有一个深度嵌套的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 一次,在单个查询中和的值来增加文档内的值,而无需加载整个文件?
我环顾网络但找不到任何相关信息。 另外,我是Mongo的新手。感谢
答案 0 :(得分: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)
);