2012-03-28 12 views
0

Ich möchte mehrere Dokumente mit verschiedenen Werten in 1 Abfrage aktualisieren, wenn möglich.Mongo Multiple Update mit PHP

kann zum Beispiel meine Dokumente wie folgt aussehen:

1:

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

} 

2:

{ 

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

} 

...

Dann habe ich ein Formular haben, den Preis zu aktualisieren Vielleicht möchte ich # 1 zu 15 und # 2 zu 400 in 1 Abfrage usw. ändern.

Zuvor

Ich hatte mehr getan Updates wie so:

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

Welche mehrere Dokumente für die Aktualisierung und Einstellung des Feldes auf den gleichen Wert hat gut funktioniert, aber ich bin nicht sicher, wie mehrere Dokumente zu aktualisieren und den Wert zu aktualisieren zu verschiedenen Werten.

Antwort

1

Vom MongoDB Docs (http://www.mongodb.org/display/DOCS/Atomic+Operations#AtomicOperations-ApplyingtoMultipleObjectsAtOnce):

können Sie Multi-Update verwenden den gleichen Modifikator zu jedem relevanten Objekt anzuwenden. Standardmäßig erlaubt ein Multi-Update einige andere Operationen (die geschrieben werden könnten) zu verschachteln. Somit wird dies nur pseudo-atomar (pseudo-isoliert) sein. Um es fullly isoliert können Sie das Atom motifier $ verwenden:

nicht isoliert:

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

isoliert:

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

Für PHP-Treiber eine bessere Nutzung array ('multiple' => wahr) -> Mongophp kann nur 3 Param verarbeiten – user956584