Node.js MongoDB Cập nhật


Cập nhật tài liệu

Bạn có thể cập nhật bản ghi hoặc tài liệu như nó được gọi trong MongoDB, bằng cách sử dụng updateOne()phương pháp này.

Tham số đầu tiên của updateOne()phương thức là một đối tượng truy vấn xác định tài liệu nào cần cập nhật.

Lưu ý: Nếu truy vấn tìm thấy nhiều bản ghi, chỉ lần xuất hiện đầu tiên được cập nhật.

Tham số thứ hai là một đối tượng xác định các giá trị mới của tài liệu.

Thí dụ

Cập nhật tài liệu có địa chỉ "Valley 345" thành name = "Mickey" và 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();
  });
});

Lưu mã ở trên vào tệp có tên "demo_update_one.js" và chạy tệp:

Chạy "demo_update_one.js"

C:\Users\Your Name>node demo_update_one.js

Điều này sẽ cung cấp cho bạn kết quả này:

1 document updated


Chỉ cập nhật các trường cụ thể

Khi sử dụng $settoán tử, chỉ các trường được chỉ định mới được cập nhật:

Thí dụ

Cập nhật địa chỉ từ "Valley 345" thành "Canyon 123":

...
  var myquery = { address: "Valley 345" };
  var newvalues = { $set: { address: "Canyon 123" } };
  dbo.collection("customers").updateOne(myquery, newvalues, function(err, res) {
...

Cập nhật nhiều tài liệu

Để cập nhật tất cả các tài liệu đáp ứng tiêu chí của truy vấn, hãy sử dụng updateMany()phương pháp này.

Thí dụ

Cập nhật tất cả các tài liệu có tên bắt đầu bằng chữ "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();
  });
});

Lưu đoạn mã trên vào một tệp có tên "demo_update_many.js" và chạy tệp:

Chạy "demo_update_many.js"

C:\Users\Your Name>node demo_update_many.js

Điều này sẽ cung cấp cho bạn kết quả này:

2 document(s) updated

Đối tượng kết quả

Các updateOne()và các updateMany()phương thức trả về một đối tượng chứa thông tin về cách thực thi ảnh hưởng đến cơ sở dữ liệu.

Hầu hết thông tin không quan trọng để hiểu, nhưng một đối tượng bên trong đối tượng được gọi là "kết quả" cho chúng ta biết liệu quá trình thực thi có diễn ra thuận lợi hay không và có bao nhiêu tài liệu bị ảnh hưởng.

Đối tượng kết quả trông như thế này:

{ n: 1, nModified: 2, ok: 1 }

Bạn có thể sử dụng đối tượng này để trả về số lượng tài liệu được cập nhật:

Thí dụ

Trả lại số tài liệu đã cập nhật:

console.log(res.result.nModified);

Điều nào sẽ tạo ra kết quả này:

2