2013-05-13 30 views
0

更新子文檔我有這個文件:用MongoDB的和PHP

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?

感謝

回答

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

會做你想要什麼,以原子爲好。

+0

謝謝!我已經有4天的問題了:S – leojg 2013-05-13 14:43:56

+1

@leojg NP,使用的操作是點符號和位置操作符,如果您想更多地閱讀子文檔 – Sammaye 2013-05-13 14:48:00