Atualização do Node.js MongoDB
Atualizar documento
Você pode atualizar um registro ou documento como é chamado no MongoDB, usando o updateOne()
método.
O primeiro parâmetro do updateOne()
método é um objeto de consulta que define qual documento atualizar.
Nota: Se a consulta encontrar mais de um registro, somente a primeira ocorrência será atualizada.
O segundo parâmetro é um objeto que define os novos valores do documento.
Exemplo
Atualize o documento com o endereço "Valley 345" para name="Mickey" e address="Canyon 123":
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
var myquery = { address: "Valley 345" };
var newvalues = {
$set: {name:
"Mickey", address: "Canyon 123" } };
dbo.collection("customers").updateOne(myquery,
newvalues, function(err, res) {
if (err) throw err;
console.log("1 document updated");
db.close();
});
});
Salve o código acima em um arquivo chamado "demo_update_one.js" e execute o arquivo:
Execute "demo_update_one.js"
C:\Users\Your Name>node demo_update_one.js
Que lhe dará este resultado:
1 document updated
Atualizar apenas campos específicos
Ao usar o $set
operador, apenas os campos especificados são atualizados:
Exemplo
Atualize o endereço de "Valley 345" para "Canyon 123":
...
var myquery = { address: "Valley 345" };
var newvalues
= { $set: { address: "Canyon 123" } };
dbo.collection("customers").updateOne(myquery,
newvalues, function(err, res) {
...
Atualizar muitos documentos
Para atualizar todos os documentos que atendem aos critérios da consulta, use o updateMany()
método.
Exemplo
Atualize todos os documentos onde o nome começa com a letra "S":
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
var myquery = { address: /^S/ };
var newvalues = {$set: {name:
"Minnie"} };
dbo.collection("customers").updateMany(myquery, newvalues, function(err,
res) {
if (err) throw err;
console.log(res.result.nModified + " document(s) updated");
db.close();
});
});
Salve o código acima em um arquivo chamado "demo_update_many.js" e execute o arquivo:
Execute "demo_update_many.js"
C:\Users\Your Name>node demo_update_many.js
Que lhe dará este resultado:
2 document(s) updated
O Objeto Resultado
Os métodos updateOne()
e
updateMany()
retornam um objeto que contém informações sobre como a execução afetou o banco de dados.
A maioria das informações não é importante para entender, mas um objeto dentro do objeto é chamado de "resultado", que nos diz se a execução foi OK e quantos documentos foram afetados.
O objeto de resultado se parece com isso:
{ n: 1, nModified: 2, ok: 1 }
Você pode usar este objeto para retornar o número de documentos atualizados:
Exemplo
Retorna o número de documentos atualizados:
console.log(res.result.nModified);
Que produzirá este resultado:
2