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

MongoDB:actualizando una matriz en una matriz

Después de investigar un poco más, parece que la única forma de modificar la matriz dentro de una matriz sería con alguna lógica externa para encontrar el índice del elemento que quiero cambiar. Hacer esto requeriría que cada cambio tenga una consulta de búsqueda para ubicar el índice y luego una consulta de actualización para modificar la matriz. Esta no parece ser la mejor manera.

Enlace a un caso de JIRA de 2010 que solicita múltiples elementos posicionales...

Dado que siempre sabré el ID de la característica, he optado por revisar la estructura de mi documento.

     {
    "_id" : "v5y8nggzpja5Pa7YS",
    "name" : "Example",
    "display_name" : "EX1",
    "groups" : [
        {
            "_id" : "s86CbNBdqJnQ5NWaB",
            "name" : "Group1",
            "display_name" : "G1",
            "features" : {
               "1" : {
                       type     : "blog",
                       name     : "[blog name]"
                       owner_id : "ga5YgvP5yza7pj8nS"
               }, 
            }
         },
     ]
 },

Con la nueva estructura, los cambios se pueden realizar de la siguiente manera:

db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});