0

我有这个文件:

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);   

哪个是正确的更新语法?

谢谢

4

1 回答 1

4
$col->update(array('_id'=>$place['_id'], 'categories.name'=>'store'), 
    array('$inc' => array('categories.$.accuracy'=>1)))

也会以原子方式做你想做的事。

于 2013-05-13T14:28:57.910 回答