Node.js MongoDB- Update


Dokument aktualisieren

Sie können einen Datensatz oder ein Dokument, wie es in MongoDB genannt wird, mithilfe der updateOne()Methode aktualisieren.

Der erste Parameter der updateOne()Methode ist ein Abfrageobjekt, das definiert, welches Dokument aktualisiert werden soll.

Hinweis: Wenn die Abfrage mehr als einen Datensatz findet, wird nur das erste Vorkommen aktualisiert.

Der zweite Parameter ist ein Objekt, das die neuen Werte des Dokuments definiert.

Beispiel

Aktualisieren Sie das Dokument mit der Adresse "Valley 345" auf name="Mickey" und 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();
  });
});

Speichern Sie den obigen Code in einer Datei namens "demo_update_one.js" und führen Sie die Datei aus:

Führen Sie "demo_update_one.js" aus

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

Was Ihnen dieses Ergebnis geben wird:

1 document updated


Nur bestimmte Felder aktualisieren

Bei Verwendung des $setOperators werden nur die angegebenen Felder aktualisiert:

Beispiel

Aktualisieren Sie die Adresse von „Valley 345“ auf „Canyon 123“:

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

Aktualisieren Sie viele Dokumente

Verwenden Sie die Methode , um alle Dokumente zu aktualisieren , die die Kriterien der Abfrage erfüllen .updateMany()

Beispiel

Aktualisieren Sie alle Dokumente, bei denen der Name mit dem Buchstaben "S" beginnt:

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();
  });
});

Speichern Sie den obigen Code in einer Datei namens "demo_update_many.js" und führen Sie die Datei aus:

Führen Sie "demo_update_many.js" aus

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

Was Ihnen dieses Ergebnis geben wird:

2 document(s) updated

Das Ergebnisobjekt

Die Methoden updateOne()und updateMany()geben ein Objekt zurück, das Informationen darüber enthält, wie sich die Ausführung auf die Datenbank ausgewirkt hat.

Die meisten Informationen sind nicht wichtig zu verstehen, aber ein Objekt innerhalb des Objekts heißt "Ergebnis", das uns sagt, ob die Ausführung in Ordnung war und wie viele Dokumente betroffen waren.

Das Ergebnisobjekt sieht folgendermaßen aus:

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

Mit diesem Objekt können Sie die Anzahl der aktualisierten Dokumente zurückgeben:

Beispiel

Geben Sie die Anzahl der aktualisierten Dokumente zurück:

console.log(res.result.nModified);

Was zu diesem Ergebnis führen wird:

2