Aktualizace Node.js MongoDB


Aktualizovat dokument

Záznam nebo dokument, jak se nazývá v MongoDB, můžete aktualizovat pomocí této updateOne()metody.

Prvním parametrem updateOne()metody je objekt dotazu definující, který dokument se má aktualizovat.

Poznámka: Pokud dotaz najde více než jeden záznam, aktualizuje se pouze první výskyt.

Druhým parametrem je objekt definující nové hodnoty dokumentu.

Příklad

Aktualizujte dokument s adresou "Valley 345" na name="Mickey" a 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();
  });
});

Uložte výše uvedený kód do souboru s názvem „demo_update_one.js“ a spusťte soubor:

Spusťte "demo_update_one.js"

C:\Users\Your Name>node demo_update_one.js

Což vám dá tento výsledek:

1 document updated


Aktualizovat pouze specifická pole

Při použití $setoperátoru se aktualizují pouze zadaná pole:

Příklad

Aktualizujte adresu z "Valley 345" na "Canyon 123":

...
  var myquery = { address: "Valley 345" };
  var newvalues = { $set: { address: "Canyon 123" } };
  dbo.collection("customers").updateOne(myquery, newvalues, function(err, res) {
...

Aktualizujte mnoho dokumentů

Chcete-li aktualizovat všechny dokumenty, které splňují kritéria dotazu, použijte updateMany()metodu.

Příklad

Aktualizujte všechny dokumenty, kde název začíná písmenem „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();
  });
});

Uložte výše uvedený kód do souboru s názvem „demo_update_many.js“ a spusťte soubor:

Spusťte "demo_update_many.js"

C:\Users\Your Name>node demo_update_many.js

Což vám dá tento výsledek:

2 document(s) updated

Objekt výsledku

Metody updateOne()a updateMany()vracejí objekt, který obsahuje informace o tom, jak provedení ovlivnilo databázi.

Většině informací není důležité porozumět, ale jeden objekt uvnitř objektu se nazývá „výsledek“, který nám říká, zda provedení proběhlo v pořádku a kolik dokumentů bylo ovlivněno.

Výsledný objekt vypadá takto:

{ n: 1, nModified: 2, ok: 1 }

Tento objekt můžete použít k vrácení počtu aktualizovaných dokumentů:

Příklad

Vrátit počet aktualizovaných dokumentů:

console.log(res.result.nModified);

Což povede k tomuto výsledku:

2