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 $set
operator 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