MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB Update Deep Array

Sfortunatamente, al momento è possibile utilizzare solo un singolo "$" posizionale per aggiornamento. Ciò limita l'aggiornamento a un singolo array incorporato, simile all'esempio nella documentazione:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(Dal tuo post, sembra che tu abbia già trovato questo, ma ho incluso il link a beneficio di tutti gli altri utenti che stanno leggendo questo post.)

Per effettuare l'aggiornamento, dovrai conoscere la posizione di due delle tre seguenti:La posizione della band nell'array "bands", la posizione dell'album nell'array degli album o la posizione della traccia nell'array "tracce".

È presente una richiesta di funzionalità per questa funzionalità ed è prevista per la versione 2.3.0 (sebbene sia soggetta a modifiche).
https://jira.mongodb.org/browse/SERVER-831 "Corrispondenza operatore di posizione Array nidificati"

Per il momento, dovrai conoscere la posizione dei documenti secondari in due dei tre array:

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!"}})

o

db.music.update({genre : "Grunge", "bands.0.albums.0.tracks.order" : 1}, {$set:{"bands.0.albums.0.tracks.$.name":"Smells Like Teen Spirit!"}})