2013-04-16 11 views
12

Ich benutze Mongotemplate für Spring, und ich fragte mich, wie ich einen Wert von einem meiner Dokumente, die ich in einem Array atomar haben könnte. Stellen Sie sich vor, dass wirMongodb Increment Wert in verschachtelten Array

{'a':1, 
    b:[{_id:341432, 
     c:2 
     }, 
     {_id:341445, 
     c:3 
     }]}; 

haben Was ich möchte Schritt c 3 bis 4 für die _id

Ich habe mit findAndModify 341.445 ist, aber ich weiß nicht, wie kann ich es für ein verschachteltes Dokument in einem machen Array.

Grüße.

+0

Bisher ist die einzige Sache, die Ich habe festgestellt, ist der Index des Arrays wie b.0.c = 11111 eine bessere Idee? – paul

Antwort

23

ein Element in einem Array Feld zu aktualisieren, können Sie die positional $ operator

Zum Beispiel verwenden die folgende js Schritte c 3 bis 4 für _id 341.445:

db.collection.update({a:1, "b._id":341445} , {$inc:{"b.$.c":1}}) 
+5

Danke!, Aber denken Sie daran, dass Ihre Antwort auf Java – paul

+0

extrapoliert werden muss Dies funktioniert nicht, wenn die Update-Abfrage mit Upsert verwendet wird. –

+0

Danke Danke Danke. Ich habe drei Stunden damit verbracht, es zur Arbeit zu bringen !!! Gute Antwort!! –

Verwandte Themen