Aktualizacja Node.js MongoDB
Aktualizuj dokument
Możesz zaktualizować rekord lub dokument tak, jak jest wywoływany w MongoDB, używając updateOne()
metody.
Pierwszym parametrem updateOne()
metody jest obiekt zapytania określający, który dokument ma zostać zaktualizowany.
Uwaga: Jeśli zapytanie znajdzie więcej niż jeden rekord, aktualizowane jest tylko pierwsze wystąpienie.
Drugi parametr to obiekt definiujący nowe wartości dokumentu.
Przykład
Zaktualizuj dokument z adresem „Valley 345” do name="Mickey" i 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();
});
});
Zapisz powyższy kod w pliku o nazwie „demo_update_one.js” i uruchom plik:
Uruchom „demo_update_one.js”
C:\Users\Your Name>node demo_update_one.js
Co da ci ten wynik:
1 document updated
Aktualizuj tylko określone pola
Podczas korzystania z $set
operatora aktualizowane są tylko określone pola:
Przykład
Zaktualizuj adres 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) {
...
Zaktualizuj wiele dokumentów
Aby zaktualizować wszystkie dokumenty spełniające kryteria zapytania, użyj updateMany()
metody.
Przykład
Zaktualizuj wszystkie dokumenty, których nazwa zaczyna się na literę „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();
});
});
Zapisz powyższy kod w pliku o nazwie „demo_update_many.js” i uruchom plik:
Uruchom „demo_update_many.js”
C:\Users\Your Name>node demo_update_many.js
Co da ci ten wynik:
2 document(s) updated
Obiekt wynikowy
Metody updateOne()
i
updateMany()
zwracają obiekt, który zawiera informacje o tym, jak wykonanie wpłynęło na bazę danych.
Większość informacji nie jest ważna do zrozumienia, ale jeden obiekt wewnątrz obiektu nazywa się „rezultatem”, który mówi nam, czy wykonanie przebiegło prawidłowo i ile dokumentów zostało naruszone.
Wynikowy obiekt wygląda tak:
{ n: 1, nModified: 2, ok: 1 }
Możesz użyć tego obiektu, aby zwrócić liczbę zaktualizowanych dokumentów:
Przykład
Zwróć liczbę zaktualizowanych dokumentów:
console.log(res.result.nModified);
Który przyniesie ten wynik:
2