我想要做的是尽可能在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))
这对于更新多个文档和将字段设置为相同的值非常有用,但我不确定如何更新多个文档并将值更新为不同的值。
答案 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 );