📜  mongo updatemany 查询 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:41.381000             🧑  作者: Mango

MongoDB UpdateMany 查询 - JavaScript

在 MongoDB 中,我们可以使用 updateMany 方法来更新多个文档。本文将介绍如何使用 updateMany 方法来更新 MongoDB 数据库中的多个文档。

语法

下面是 updateMany 方法的语法:

db.collection.updateMany(
   <filter>,
   <update>,
   {
     upsert: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • filter: 更新的筛选条件,类似于 find 方法,可以是一个文档或一个查询条件。
  • update: 更新的操作,可以是一个文档或一个更新操作符。
  • upsert: 可选。如果该参数为 true,如果没有查询到符合条件的文档,将会插入一个新的文档,但只会插入一个文档。默认为 false
  • writeConcern: 可选。指定写入操作的安全级别,默认为集合的写入安全级别。
示例

假设我们有一个名为 students 的集合,包含以下文档:

{
  "_id": ObjectId("5f82f5ec6ece3e6faab7695d"),
  "name": "Alice",
  "age": 20,
  "score": 80
},
{
  "_id": ObjectId("5f82f5ec6ece3e6faab7695e"),
  "name": "Bob",
  "age": 21,
  "score": 90
},
{
  "_id": ObjectId("5f82f5ec6ece3e6faab7695f"),
  "name": "Chris",
  "age": 19,
  "score": 70
}

现在我们要将所有年龄小于 20 岁的学生的成绩加 10 分,可以使用以下代码:

const MongoClient = require('mongodb').MongoClient;

const url = 'mongodb://localhost:27017';
const dbName = 'test';

MongoClient.connect(url, function(err, client) {
    console.log("Connected successfully to server");

    const db = client.db(dbName);
    const collection = db.collection('students');

    collection.updateMany(
        { age: { $lt: 20 } },
        { $inc: { score: 10 } },
        function(err, result) {
            console.log(result);
            client.close();
        }
    );
});

在上面的代码中,我们使用了 $lt 操作符来筛选年龄小于 20 岁的学生,并使用 $inc 操作符来将成绩加 10 分。运行结果如下:

{ acknowledged: true, modifiedCount: 1, upsertedId: null, upsertedCount: 0, matchedCount: 1 }

可以看到,matchedCount 表示匹配的文档数目,modifiedCount 表示更新的文档数目。

总结

本文介绍了如何使用 updateMany 方法来更新 MongoDB 中的多个文档。我们可以使用各种操作符来指定更新操作,以满足不同的需求。希望本文对你有所帮助。