MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:atualizando um array em array


Depois de mais algumas pesquisas, parece que a única maneira de modificar o array dentro de um array seria com alguma lógica externa para encontrar o índice do elemento que quero alterar. Fazer isso exigiria que cada alteração tivesse uma consulta de localização para localizar o índice e, em seguida, uma consulta de atualização para modificar a matriz. Este não parece ser o melhor caminho.

Link para um caso JIRA de 2010 solicitando vários elementos posicionais...

Como sempre saberei o ID do recurso, optei por revisar minha estrutura de documentos.
     {
    "_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"
               }, 
            }
         },
     ]
 },

Com a nova estrutura, as alterações podem ser feitas da seguinte maneira:
db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});