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