1
resposta

Erro no comando update do mongo

Estou tentando atualizar o documento abaixo, o campo de habilidade para chines, mas me da erro:

{ "id" : ObjectId("5f83adce14aa38669313476d"), "nome" : "felipe", "datanascimento" : ISODate("1994-03-26T03:00:00.000Z"), "curso" : { "nome" : "Siatemas de informação" }, "notas" : [ 10.0, 9.0, 4.5 ], "habilidades" : [ { "nome" : "ingles" } ] }

O comando que estou fazendo é o: db.alunos.update({"nome":"felipe"},{$set : {"habilidades.nome":"chines"}})

E o erro é: Cannot create field 'nome' in element {habilidades: [ { nome: "ingles" } ]}

Não estou conseguindo resolver, alguém sabe?

1 resposta

Olá Rodrigo, tudo bem?

Para realizar a atualização parcial de um documento você precisa referenciar qual o campo está atualizando, neste caso o erro ocorreu, pois você primeiramente informou que o campo que iria ser atualizado era o nome, porém na parte no $SET você informou o campo de habilidades. Um exemplo do comando UPDATE em uma atualização parcial do documento:

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

Você poderia realizar essa atualização fazendo a atualização completa do documento, mas alterando apenas o campo desejado, como neste exemplo:

db.alunos.update({"_id": ObjectId("5e97317f309e7fdb09da3320")}, 
 {  "nome": "Danielle",
     "data_nascimento": new Date(1997, 08, 22),
     "notas": [10, 9, 4],
"curso": {  "nome": "Sistemas De Informação"   },
     "habilidades": [
       { "nome": "Chinês",
             "nível": "Básico" }
     ] } )

Alterei apenas o campo habilidades de Inglês, para Chinês.

Você pode ver um pouco mais sobre acessando a documentação do MongoD.

Espero ter ajudado e bons estudos!