Node.js MongoDB- opdatering
Dateer dokument op
U kan 'n rekord, of dokument soos dit in MongoDB genoem word, opdateer deur die updateOne()
metode te gebruik.
Die eerste parameter van die updateOne()
metode is 'n navraagobjek wat definieer watter dokument om by te werk.
Let wel: As die navraag meer as een rekord vind, word slegs die eerste voorkoms opgedateer.
Die tweede parameter is 'n objek wat die nuwe waardes van die dokument definieer.
Voorbeeld
Dateer die dokument op met die adres "Valley 345" na naam="Mickey" en adres="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();
});
});
Stoor die kode hierbo in 'n lêer genaamd "demo_update_one.js" en hardloop die lêer:
Begin "demo_update_one.js"
C:\Users\Your Name>node demo_update_one.js
Wat vir jou hierdie resultaat sal gee:
1 document updated
Dateer slegs spesifieke velde op
Wanneer die $set
operateur gebruik word, word slegs die gespesifiseerde velde opgedateer:
Voorbeeld
Dateer die adres op vanaf "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) {
...
Dateer baie dokumente op
Om alle dokumente op te dateer wat aan die kriteria van die navraag voldoen, gebruik die updateMany()
metode.
Voorbeeld
Werk alle dokumente op waar die naam met die letter "S" begin:
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();
});
});
Stoor die kode hierbo in 'n lêer genaamd "demo_update_many.js" en hardloop die lêer:
Begin "demo_update_many.js"
C:\Users\Your Name>node demo_update_many.js
Wat vir jou hierdie resultaat sal gee:
2 document(s) updated
Die resultaatvoorwerp
Die updateOne()
en die
updateMany()
metodes gee 'n objek terug wat inligting bevat oor hoe die uitvoering die databasis beïnvloed het.
Die meeste van die inligting is nie belangrik om te verstaan nie, maar een voorwerp binne die voorwerp word "resultaat" genoem wat vir ons sê of die uitvoering OK gegaan het, en hoeveel dokumente geraak is.
Die resultaatvoorwerp lyk soos volg:
{ n: 1, nModified: 2, ok: 1 }
Jy kan hierdie voorwerp gebruik om die aantal opgedateerde dokumente terug te gee:
Voorbeeld
Gee die aantal bygewerkte dokumente terug:
console.log(res.result.nModified);
Wat hierdie resultaat sal lewer:
2