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 $setoperador, 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