Node.js MongoDB 更新数据


更新文档

您可以使用 MongoDB 中的名称来更新记录或文档updateOne()方法。

第一个参数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 document updated");
    db.close();
  });
});
运行示例 »

将上面的代码保存在名为 "demo_update_one.js" 的文件中并运行该文件:

运行"demo_update_one.js"

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

这会给你这个结果:

1 document updated


仅更新特定字段

当使用$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 + " document(s) updated");
    db.close();
  });
});
运行示例 »

将上面的代码保存在名为 "demo_update_many.js" 的文件中并运行该文件:

运行"demo_update_many.js"

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

这会给你这个结果:

2 document(s) updated

结果对象

这个updateOne()updateMany()方法返回一个对象,其中包含有关执行如何影响数据库的信息。

大多数信息对于理解并不重要,但对象内的一个对象称为 "result",它告诉我们执行是否正常,以及有多少文档受到影响。

结果对象如下所示:

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

您可以使用此对象返回更新文档的数量:

示例

返回更新文档的数量:

console.log(res.result.nModified);

这将产生这样的结果:

2