前端必知必会-Node.js连接MongoDB 更新文档


Node.js连接MongoDB 更新文档

更新文档

您可以使用 updateOne() 方法更新记录(即 MongoDB 中所谓的文档)。

updateOne() 方法的第一个参数是查询对象,定义要更新哪个文档。

注意:如果查询找到多个记录,则仅更新第一个记录。

第二个参数是定义文档新值的对象。

示例获取您自己的 Node.js 服务器
将地址为“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 个文档已更新

仅更新特定字段

使用 $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

总结

本文介绍了Node.js连接MongoDB 更新文档,如有问题欢迎私信和评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值