Bohužel v současné době je možné použít pouze jeden poziční "$" na aktualizaci. Toto omezuje aktualizaci na jedno vložené pole, podobně jako v příkladu v dokumentaci:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(Z vašeho příspěvku to vypadá, že jste již našel jsem to, ale odkaz jsem zahrnul ve prospěch všech ostatních uživatelů, kteří čtou tento příspěvek.)
Abyste mohli provést aktualizaci, budete muset znát pozici dvou z následujících tří:Pozice kapely v poli „bands“, pozice alba v poli alb nebo pozice skladby. v poli "tracks".
Pro tuto funkci existuje požadavek na funkci a je navržena pro verzi 2.3.0 (ačkoli to se může změnit).
https://jira.mongodb.org/browse/SERVER-831 "Párování pozic Vnořená pole"
Prozatím budete muset znát polohu dílčích dokumentů ve dvou ze tří polí:
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!"}})
nebo
db.music.update({genre : "Grunge", "bands.0.albums.0.tracks.order" : 1}, {$set:{"bands.0.albums.0.tracks.$.name":"Smells Like Teen Spirit!"}})