Sayangnya, saat ini hanya dimungkinkan untuk menggunakan satu posisi "$" per pembaruan. Ini membatasi pembaruan ke satu larik yang disematkan, mirip dengan contoh dalam dokumentasi:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(Dari posting Anda, sepertinya Anda sudah melakukannya menemukan ini, tetapi saya telah menyertakan tautan untuk kepentingan pengguna lain yang membaca posting ini.)
Untuk melakukan pembaruan, Anda harus mengetahui posisi dua dari tiga berikut:Posisi band dalam susunan "band", posisi album dalam susunan album, atau posisi trek dalam larik "trek".
Ada permintaan fitur untuk fungsi ini, dan dijadwalkan untuk versi 2.3.0 (meskipun ini dapat berubah).
https://jira.mongodb.org/browse/SERVER-831 "Pencocokan Operator Posisi Array Bersarang"
Untuk saat ini, Anda harus mengetahui posisi sub dokumen dalam dua dari tiga larik:
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!"}})
atau
db.music.update({genre : "Grunge", "bands.0.albums.0.tracks.order" : 1}, {$set:{"bands.0.albums.0.tracks.$.name":"Smells Like Teen Spirit!"}})