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 $setoperatora 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