MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mise à jour de MongoDB Deep Array

Malheureusement, à l'heure actuelle, il n'est possible d'utiliser qu'un seul "$" positionnel par mise à jour. Cela limite la mise à jour à un seul tableau intégré, similaire à l'exemple de la documentation :http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(D'après votre message, il semble que vous ayez déjà trouvé ceci, mais j'ai inclus le lien pour le bénéfice de tous les autres utilisateurs lisant ce message.)

Pour faire la mise à jour, vous devrez connaître la position de deux des trois suivants :La position du groupe dans le tableau "bands", la position de l'album dans le tableau albums, ou la position de la piste dans le tableau "pistes".

Il y a une demande de fonctionnalité pour cette fonctionnalité, et elle est prévue pour la version 2.3.0 (bien que cela puisse changer).
https://jira.mongodb.org/browse/SERVER-831 "Positional Operator Matching Tableaux imbriqués"

Pour l'instant, vous devrez connaître la position des sous-documents dans deux des trois tableaux :

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

ou

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