MongoDB updateOne() , updateMany() e seus operadores
Atualizando documentos
No MongoDB temos diversos mtodos que nos ajudam a atualizar nossos documentos, por exemplo: adicionar um novo campo ou remov-lo e at adicionar um novo item em uma array ou remover.
Nesse artigo, vou mostrar alguns dos mtodos que mais utilizo para atualizar documentos juntamente com alguns operadores de atualizao. Vamos usar como exemplo o documento abaixo:
Nosso Documento
{ "name": "Emanuel", "password": "123456", "email": "[email protected]"}
Mtodos e Operadores
No MongoDB possumos mais de 5 mtodos que nos auxiliam na atualizao de documentos, mas no nosso artigo iremos utilizar 2 em especfico que so: updateOne e updateMany.
Ambos no retornam o documento, mas vou estar deixando o retorno para demonstrao. Caso queira o retorno do documento utilize o mtodo findOneAndUpdate.
Mtodo updateOne
O mtodo updateOne responsvel pela atualizao de somente 1 documento. O mtodo recebe 3 parmetros que so: filter,
update e options que deixaremos para outro momento.
Exemplo
//filter => query do documento que deseja encontrar para alterao//update => operador que ir utilizar na atualizao do documentoconst filter = { name: "Emanuel" }const update = { $set: { name: "Rodrigo" } } //Abaixo explicaremos o que o $set.const user = db.users.updateOne(filter, update)
Retorno
{"name": "Rodrigo", "email": "[email protected]", "password": "123456"}
Mtodo updateMany
O mtodo updateMany responsvel pela atualizao de diversos documentos (muita ateno ao usar esse comando). Todos os documentos que forem encontrados de acordo com a query passada sero alterados.
Documentos de exemplo
{ "name": "Emanuel", "password": "123456", "email": "[email protected]", "genre": "male",},{ "name": "Rodrigo", "password": "rodrigo123", "email": "[email protected]", "genre": "male"}
Exemplo
const filter = { genre: "male" }const update = { $set: { password: "123" } }const user = db.users.updateMany(filter, update)
Retorno
[{"name": "Rodrigo", "email": "[email protected]", "password": "123", "genre": "male"}, {"name": "Emanuel", "email": "[email protected]", "password": "123", "genre": "male"}]
Operadores de Atualizao
Os mtodos de atualizao possuem diversos operadores de atualizao que nos auxiliam na hora de atualizar um ou diversos documentos.
Na documentao voc encontra diversos, mas vou estar deixando os que mais utilizo.
Exemplo de como utilizar um operador
db.users.updateMany({ genre: "male"},{ $set: { genre: "female", name: "Robson" }, <operator2>: { <field2>: <value2>, ... }, ...})
Operador $set
Este operador responsvel por adicionar um novo campo no seu documento ou at a sobrepor um campo j existente.
Documento
{"name": "Rodrigo", "genre": "male"}
Exemplo
const user = db.users.updateMany({ name: "Rodrigo" }, { $set: { genre: "female" } })
Retorno
{"name": "Rodrigo", "genre": "female"}
Operador $inc
Este operador responsvel por incrementar ou decrementar um nmero ao campo (para decrementar s usar nmeros negativos)
Documento
{"name": "Rodrigo", "seguidores": 10}
Exemplo
const user = db.users.updateOne({ name: "Rodrigo" }, { $inc: { seguidores: 2 } })
Retorno
{"name": "Rodrigo", "seguidores": 12}
Operador $push
Este operador responsvel por adicionar um novo item a uma array.
Documento
{"name": "Rodrigo", "interests": ["basquete"]}
Exemplo
const user = db.users.updateOne({ name: "Rodrigo" }, { $push: { interests: "futebol" } })
Retorno
{"name": "Rodrigo", "interests": ["basquete", "futebol"]}
Operador $pull
Este operador responsvel por remover um item da sua array.
Documento
{"name": "Rodrigo", "interests": ["basquete", "futebol"]}
Exemplo
const user = db.users.updateOne({ name: "Rodrigo" }, { $pull: { interests: "basquete" } })
Retorno
{"name": "Rodrigo", "interests": ["futebol"]}
Concluso
Ento, utilizamos o mtodo updateOne quando queremos atualizar somente um documento e o mtodo updateMany quando desejamos atualizar diversos documentos. Com o uso dos operadores certos, conseguimos resultados bem legais para suas alteraes no banco.
Linkedin: Emanuel Ferreira
Email: [email protected]
Reviso do Texto: Ana Julia Lima
Original Link: https://dev.to/emanuelferreira/mongodb-updateone-updatemany-e-seus-operadores-55hp
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To