Node.js 如何更新 MongoDB 数据?

文章导读
上一个 测验 下一个 Update 操作指的是修改 MongoDB 集合中一个或多个文档字段的值。Node.js 的 mongodb 驱动程序定义了 updateOne() 和 updateMany() 方法。updateOne() 方法用于修改单个文档,而 updateM
📋 目录
  1. updateOne()
  2. updateMany()
A A

Node.js - MongoDB 更新



上一个
测验
下一个

Update 操作指的是修改 MongoDB 集合中一个或多个文档字段的值。Node.js 的 mongodb 驱动程序定义了 updateOne() 和 updateMany() 方法。updateOne() 方法用于修改单个文档,而 updateMany() 方法则对多个文档执行更新操作。

updateOne() 方法的语法如下 −

collection.updateOne(query, values);

query 参数用于查找要更新的目标文档。values 参数包含要修改文档的 key:value 对。updateMany() 方法的语法相同,只是 query 会从集合中返回多个文档。

updateOne()

以下示例更改 ProductID=3 的文档的价格。$set 操作符将新值赋给 price 字段。

const {MongoClient} = require('mongodb');

async function main(){

   const uri = "mongodb://localhost:27017/";
   const client = new MongoClient(uri);

   try {
      await client.connect();
      await sortdocs(client, "mydb", "products");
   } finally {
      // 关闭与 MongoDB 集群的连接
      await client.close();
   }
}

main().catch(console.error);
async function sortdocs(client, dbname, colname){
   var qry = { ProductID: 3 };
   var vals = { $set: { Name: "Router", price: 2750 } };
   const result = await client.db(dbname).collection(colname).updateOne(qry, vals);
   console.log("文档已更新");
}

要验证文档是否已更新,可以使用 Mongosh shell 并输入以下命令 −

> use mydb
< switched to db mydb
> db.products.find({"ProductID":3})
{
   _id: ObjectId("6580964f20f979d2e9a72ae9"),
   ProductID: 3,
   Name: 'Router',
   price: 2750
}

updateMany()

假设 products 集合中有以下名称以 'er' 结尾的文档。

Update Many

以下 sortdocs() 函数将上述所有产品的价格增加 125 卢比。我们使用了 $inc 操作符。

示例

async function sortdocs(client, dbname, colname){
   var qry = {Name: /er$/};
   var vals = { $inc: { price: 125 } };
   const result = await client.db(dbname).collection(colname).updateMany(qry, vals);
   console.log("文档已更新");
}

输出

Sortdocs Function