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í $set
operá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