Node.js MongoDB 更新
更新文件
您可以使用 updateOne()
方法來更新一個記錄,或者在 MongoDB 中稱為文件。
updateOne() 方法的第一個引數是一個查詢物件,用於定義要更新的文件。
注意:如果查詢找到多個記錄,只有第一個匹配的記錄會被更新。
第二個引數是一個物件,用於定義文件的新值。
示例
將地址為 "Valley 345" 的文件更新為 name="Mickey" 和 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 個文件已更新");
db.close();
});
});
執行示例 »
將上面的程式碼儲存在一個名為 "demo_update_one.js" 的檔案中並執行它
執行 "demo_update_one.js"
C:\Users\Your Name>node demo_update_one.js
這將產生以下結果:
1 個文件已更新
僅更新特定欄位
使用 $set
運算子時,只有指定的欄位會被更新
示例
將地址從 "Valley 345" 更新為 "Canyon 123"
...
var myquery = { address: "Valley 345" };
var newvalues = { $set: { address: "Canyon 123" } };
dbo.collection("customers").updateOne(myquery, newvalues, function(err, res) {
...
執行示例 »
更新多個文件
要更新所有滿足查詢條件的文件,請使用 updateMany()
方法。
示例
更新所有名字以字母 "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 + " 個文件已更新");
db.close();
});
});
執行示例 »
將上面的程式碼儲存在一個名為 "demo_update_many.js" 的檔案中並執行它
執行 "demo_update_many.js"
C:\Users\Your Name>node demo_update_many.js
這將產生以下結果:
2 個文件已更新
結果物件
updateOne() 和 updateMany() 方法會返回一個物件,其中包含關於執行如何影響資料庫的資訊。
其中大部分資訊並不重要,但物件中的一個名為 "result" 的物件告訴我們執行是否成功,以及有多少文件受到了影響。
result 物件看起來是這樣的
{ n: 1, nModified: 2, ok: 1 }
您可以使用此物件來返回更新的文件數量
示例
返回已更新的文件數
console.log(res.result.nModified);
這將產生以下結果:
2