2012-03-28 41 views
0

我想要做的是如果可能的話,在1個查詢中更新具有不同值的多個文檔。Mongo多個更新與PHP

例如我的文檔可能看起來像:

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

從MongoDB的文檔(http://www.mongodb.org/display/DOCS/Atomic+Operations#AtomicOperations-ApplyingtoMultipleObjectsAtOnce):

可以使用多次更新相同的修改適用於所有相關 對象。默認情況下,多重更新將允許其他一些操作 (可能是寫入)交錯。因此,這隻會是僞原子的(僞隔離的) 。爲了讓fullly孤立你可以 使用$原子motifier:

不是孤立的:

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

隔離:

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

對於PHP驅動程序更好地利用陣列( '多'=> true) - > Mongophp只能處理3個參數 – user956584 2012-09-09 21:06:35