使用php进行Mongo多次更新

时间:2012-03-28 18:41:27

标签: php mongodb

我想要做的是尽可能在1个查询中更新具有不同值的多个文档。

例如我的文档可能如下:

1:

{
   "key": 123,
   "price": 10,

}

2:

{

   "key": 1234,
   "price": 15,

}

...

然后我有一个表格来更新价格,也许我想在1个查询中改变#1到15和#2到400等。

之前我做过多次更新,如下:

$db->update('items', array('key' -> array('$in' => $items_to_update)), array('$inc' => array('price' => 1))

这对于更新多个文档和将字段设置为相同的值非常有用,但我不确定如何更新多个文档并将值更新为不同的值。

1 个答案:

答案 0 :(得分:1)

来自MongoDB文档(http://www.mongodb.org/display/DOCS/Atomic+Operations#AtomicOperations-ApplyingtoMultipleObjectsAtOnce):

  

您可以使用多次更新将相同的修改器应用于每个相关的修改器   宾语。默认情况下,多次更新将允许其他一些操作   (可能是写入)交错。因此,这只会是   伪原子(伪孤立)。为了使它完全孤立你可以   使用$ atomic motifier:

     

没有孤立:

db.foo.update( { x : 1 } , { $inc : { y : 1 } } , false , true );
     

分离:

db.foo.update( { x : 1 , $atomic : 1 } , { $inc : { y : 1 } } , false , true );