Niestety, obecnie możliwe jest użycie tylko jednego pozycyjnego "$" na aktualizację. Ogranicza to aktualizację do pojedynczej wbudowanej tablicy, podobnie jak w przykładzie w dokumentacji:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(Z twojego postu wygląda na to, że już znalazłem to, ale zamieściłem link z korzyścią dla innych użytkowników czytających ten post.)
Aby dokonać aktualizacji, będziesz musiał znać pozycję dwóch z trzech następujących:pozycja zespołu w tablicy „bands”, pozycja albumu w tablicy albumów lub pozycja utworu w tablicy „tracks”.
Istnieje prośba o dodanie funkcji dla tej funkcji, która jest przeznaczona dla wersji 2.3.0 (chociaż może to ulec zmianie).
https://jira.mongodb.org/browse/SERVER-831 "Dopasowanie operatorów pozycyjnych Tablice zagnieżdżone"
Na razie będziesz musiał znać pozycję dokumentów podrzędnych w dwóch z trzech tablic:
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!"}})
lub
db.music.update({genre : "Grunge", "bands.0.albums.0.tracks.order" : 1}, {$set:{"bands.0.albums.0.tracks.$.name":"Smells Like Teen Spirit!"}})