Cập nhật MongoDB của Node.js
Cập nhật tài liệu
Bạn có thể cập nhật một bản ghi hoặc tài liệu như được gọi trong MongoDB bằng cách sử dụng phương thức updateOne()
.
Tham số đầu tiên của phương thức updateOne()
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 thì chỉ bản ghi đầ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.
Ví dụ
Cập nhật tài liệu có địa chỉ "Thung lũng 345" thành tên="Mickey" và địa chỉ="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();
});
});
Chạy ví dụ »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ẽ 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 toán tử $set
, chỉ các trường được chỉ định mới được cập nhật:
Ví dụ
Cập nhật địa chỉ từ “Thung lũng 345” thành “Hẻm núi 123”:
...
var myquery = { address: "Valley 345" };
var newvalues
= { $set: { address: "Canyon 123" } };
dbo.collection("customers").updateOne(myquery,
newvalues, function(err, res) {
...
Chạy ví dụ »Cập nhật nhiều tài liệu
Để cập nhật tất cả tài liệu đáp ứng tiêu chí của truy vấn, hãy sử dụng phương thức updateMany()
.
Ví 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();
});
});
Chạy ví dụ »Lưu mã ở trên vào 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ẽ cho bạn kết quả này:
2 document(s) updated
Đối tượng kết quả
Các phương thức updateOne()
và updateMany()
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 đều 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ó ổn 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:
Ví dụ
Trả về số lượng tài liệu được cập nhật:
console.log(res.result.nModified);
nào sẽ tạo ra kết quả này:
2