0

私はこの文書を持っています:

places: {
'name': 'wallmart',
'categories' : [{'name':'store','accuracy':'1'}]
}

場所には多くのカテゴリがあり、それぞれに異なる値があります。

特定の状況では、カテゴリの値が上昇する可能性があります。

更新しようとしていますが、機能していません。ドキュメントが変更され、次のようになります。

{...
'categories' : {'name':'store','accuracy':'2'}
...}

配列を削除し、サブドキュメントを 1 つだけ追加します。

これは私の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 に答える