我有这个文件:
places: {
'name': 'wallmart',
'categories' : [{'name':'store','accuracy':'1'}]
}
一个地方可以有很多类别,每个类别都有不同的价值。
在某些情况下,类别的价值可能会上升。
我试图更新但它不起作用,它改变了文档并变成这样:
{...
'categories' : {'name':'store','accuracy':'2'}
...}
它删除数组并只添加一个子文档。
这是我的PHP代码:
$query = array('_id'=>$place['_id']);
$acc = $place_cat['accuracy'] + 1;
$params = array('$set' => array("categories" => array('name'=>$cat['name'],'accuracy'=>$acc)));
$col->update($query,$params);
哪个是正确的更新sintax?
由于
答案 0 :(得分:4)
$col->update(array('_id'=>$place['_id'], 'categories.name'=>'store'),
array('$inc' => array('categories.$.accuracy'=>1)))
也会原子地做你想做的事。