Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

update mongoDb

Estou tentando fazer o update do nome da habilidade mas não funciona:

db.alunos.find({})
{
    "_id" : ObjectId("60788984962a44ed77859639"),
    "name" : "marcela",
    "idade" : 22,
    "habilidades" : [ 
        {
            "name" : "Futebol"
        }
    ],
    "curso" : {
        "name" : "moda",
        "periodo" : 1
    }
}
  • tentativa de update
db.alunos.update(
    {"habilidades.name": "Futebol"},
    { $set:
        {"habilidades.name":"Xadrez"}
    }
)
  • O campo não foi alterado Cannot create field 'name' in element {habilidades: [ { name: "Futebol" } ]}
{
    "_id" : ObjectId("60788984962a44ed77859639"),
    "name" : "marcela",
    "idade" : 22,
    "habilidades" : [ 
        {
            "name" : "Futebol"
        }
    ],
    "curso" : {
        "name" : "moda",
        "periodo" : 1
    }
}
1 resposta
solução!

Encontrei a resposta na parte escrita do curso:

Atenção, o update não aceita o sinal de ".". Assim, não podemos escrever dentro das chaves curso.nome.

db.alunos.update(
    {"curso.nome" : "Sistema de informação"}
    {
        "curso.nome" : "Sistemas de informação"
    }
)

Também não podemos passar que a primeira condição seja curso.nome e na segunda apenas nome, a primeira condição apenas substituirá a segunda. Portanto, não podemos usar o update junto a "curso.nome":

db.alunos.update(
    {"curso.nome" : "Sistema de informação"}
    { 

        "nome" : "Sistemas de informação"
    }
)