Node.js MongoDB- update


Document bijwerken

U kunt een record, of document zoals het in MongoDB wordt genoemd, bijwerken met behulp van de updateOne()methode.

De eerste parameter van de updateOne()methode is een query-object dat definieert welk document moet worden bijgewerkt.

Opmerking: Als de query meer dan één record vindt, wordt alleen het eerste exemplaar bijgewerkt.

De tweede parameter is een object dat de nieuwe waarden van het document definieert.

Voorbeeld

Werk het document bij met het adres "Valley 345" naar name="Mickey" en 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();
  });
});

Sla de bovenstaande code op in een bestand met de naam "demo_update_one.js" en voer het bestand uit:

Voer "demo_update_one.js" uit

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

Wat je dit resultaat geeft:

1 document updated


Alleen specifieke velden bijwerken

Bij gebruik van de $setoperator worden alleen de opgegeven velden bijgewerkt:

Voorbeeld

Werk het adres bij van "Valley 345" naar "Canyon 123":

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

Veel documenten bijwerken

Gebruik de methode om alle documenten bij te werken die voldoen aan de criteria van de query .updateMany()

Voorbeeld

Werk alle documenten bij waarvan de naam begint met de letter "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();
  });
});

Sla de bovenstaande code op in een bestand met de naam "demo_update_many.js" en voer het bestand uit:

Voer "demo_update_many.js" uit

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

Wat je dit resultaat geeft:

2 document(s) updated

Het resultaatobject

De updateOne()en de updateMany()methoden retourneren een object dat informatie bevat over hoe de uitvoering de database beïnvloedde.

De meeste informatie is niet belangrijk om te begrijpen, maar één object in het object wordt "resultaat" genoemd, wat ons vertelt of de uitvoering goed is verlopen en hoeveel documenten zijn getroffen.

Het resultaatobject ziet er als volgt uit:

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

U kunt dit object gebruiken om het aantal bijgewerkte documenten te retourneren:

Voorbeeld

Retourneer het aantal bijgewerkte documenten:

console.log(res.result.nModified);

Wat dit resultaat oplevert:

2