Helaas is het op dit moment alleen mogelijk om een enkele "$" positional per update te gebruiken. Dit beperkt de update tot een enkele embedded array, vergelijkbaar met het voorbeeld in de documentatie:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(Uit uw bericht lijkt het alsof u al heb dit gevonden, maar ik heb de link toegevoegd ten behoeve van andere gebruikers die dit bericht lezen.)
Om de update uit te voeren, moet u de positie van twee van de volgende drie weten:De positie van de band in de "bands"-array, de positie van het album in de albums-array of de positie van de track in de array "tracks".
Er is een functieverzoek voor deze functionaliteit en het is gepland voor versie 2.3.0 (hoewel dit kan worden gewijzigd).
https://jira.mongodb.org/browse/SERVER-831 "Positional Operator Matching Geneste arrays"
Voorlopig moet u de positie van de subdocumenten in twee van de drie arrays kennen:
db.music.update({genre : "Grunge", "bands.name" : "Nirvana"}, {$set:{"bands.$.albums.0.tracks.0.name":"Smells Like Teen Spirit!"}})
db.music.update({genre : "Grunge", "bands.0.albums.name" : "Nevermind"}, {$set:{"bands.0.albums.$.tracks.0.name":"Smells Like Teen Spirit!"}})
of
db.music.update({genre : "Grunge", "bands.0.albums.0.tracks.order" : 1}, {$set:{"bands.0.albums.0.tracks.$.name":"Smells Like Teen Spirit!"}})