Dicas sobre desenvolvimento de software, gestão e tributações

Rede Social

4 de junho de 2018

Mongo: Atualização (Update)


     Neste post estarei mostrando alguns comandos para atualização de documentos, o conhecido update do SQL.

     Para atualizar um documento podemos utilizar:
db.funcionarios.update({}, {}) onde o primeiro parâmetro é a condição do que queremos atualizar, seria o where do SQL e o segundo é o valor que será atualizado.
    Mas passando um update desta forma fazemos com que o mongo intenda que estamos atualizando um documento inteiro que é o padrão dele.

     Para atualizar o campo de um documento podemos utilizar:
db.funcionarios.update(
     { "departamento.nome" : "RH"},
     { $set : {"departamento.nome" : "Recursos humanos"}}
)
    Mas como disse anteriormente o padrão do mongo é atualizar um documento, mesmo que estejamos passando o set para atualizar apenas um campo e na condição passamos uma condição onde possam ter vários registros, ele só vai atualizar o primeiro que encontrar.

     Para atualizar todas as linhas encontradas temos que avisar ao mongo que é isso que desejamos, utilizando o multi:
db.funcionarios.update(
     { "departamento.nome" : "RH"},
     { $set : {"departamento.nome" : "Recursos humanos"}},
     { multi : true }
)

     Agora e quando queremos adicionar um valor a um documento? Imagine que estou em um banco de dados de controle de alunos e esses alunos podem ter várias notas, ou seja tenho um db.alunos contendo um .notas.
     Para adicionar um valor a um documento, temos uma opção que é o $push:

db.alunos.update(
    {"_id" : ObjectId("16db0004b8d72ea12f75d3b9")},
    { $push : { notas : 7.0 } }
)
    Certo e caso eu queira adicionar mais de uma nota de uma só vez?
    Para adicionar mais de um valor no push temos que utilizar o comando each
db.alunos.update(
    {"_id" : ObejctId("16db0004b8d72ea12f75d3b9")},
    { $push : { "notas" : {$each : [7.5, 5.0] } }}
)

     Existem muitas outras opções como o $inc que serve para incrementar um valor, como por exemplo foi adicionada a nota de um aluno como 7.5, mas o mesmo teve trabalhos extras que valeram mais um ponto, poderíamos utilizar o inc para adicionar 1 à nota ficando com 8.5.
     Ou o $currentDate que seta a data atual à um campo.

Como sempre faço aqui vai a Documentação MongoDB, pois existem várias outras opções.

0 comentários:

Postar um comentário