菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

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

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持