使用mongodb和php更新子文档

时间:2013-05-13 14:25:56

标签: php mongodb

我有这个文件:

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?

由于

1 个答案:

答案 0 :(得分:4)

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

也会原子地做你想做的事。