sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB Actualizar matriz profunda

Desafortunadamente, en la actualidad solo es posible usar un solo posicional "$" por actualización. Esto limita la actualización a una sola matriz incrustada, similar al ejemplo en la documentación:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(Según su publicación, parece que ya ha encontré esto, pero he incluido el enlace para el beneficio de cualquier otro usuario que lea esta publicación).

Para realizar la actualización, deberá conocer la posición de dos de los tres siguientes:la posición de la banda en la matriz "bandas", la posición del álbum en la matriz de álbumes o la posición de la pista en la matriz "pistas".

Hay una solicitud de función para esta funcionalidad, y está programada para la versión 2.3.0 (aunque esto está sujeto a cambios).
https://jira.mongodb.org/browse/SERVER-831 "Coincidencia de operadores posicionales Matrices anidadas"

Por el momento, deberá conocer la posición de los subdocumentos en dos de las tres matrices:

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