Desværre er det på nuværende tidspunkt kun muligt at bruge en enkelt "$" position pr. opdatering. Dette begrænser opdateringen til et enkelt indlejret array, svarende til eksemplet i dokumentationen:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(Fra dit indlæg ser det ud til, at du allerede har fandt dette, men jeg har inkluderet linket til gavn for alle andre brugere, der læser dette indlæg.)
For at foretage opdateringen skal du kende positionen af to ud af følgende tre:Bandets position i "bands"-arrayet, albummets position i album-arrayet eller positionen af sporet i "spor"-arrayet.
Der er en funktionsanmodning for denne funktionalitet, og den er beregnet til version 2.3.0 (selvom dette kan ændres).
https://jira.mongodb.org/browse/SERVER-831 "Positionel operatørmatching Indlejrede arrays"
Indtil videre skal du kende underdokumenternes position i to ud af de tre arrays:
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!"}})
eller
db.music.update({genre : "Grunge", "bands.0.albums.0.tracks.order" : 1}, {$set:{"bands.0.albums.0.tracks.$.name":"Smells Like Teen Spirit!"}})