📜  MongoDB updateOne() 方法 – db.Collection.updateOne()(1)

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

MongoDB updateOne() 方法 – db.Collection.updateOne()

MongoDB 是一种文档数据库,以 BSON 格式存储数据。在 MongoDB 中,updateOne() 是更新集合中符合条件的第一条文档的方法。

语法
db.collection.updateOne(
   <filter>,
   <update>,
   {
      upsert: <boolean>,
      writeConcern: <document>,
      collation: <document>,
      arrayFilters: [ <filterdocument1>, ..., <filterdocumentN> ]
   }
)

参数说明如下:

  • filter:查询条件,可以是一个普通的查询条件,如 {name: 'MongoDB'},也可以使用高级查询操作符,如 {age: {$gt: 18}}
  • update:更新操作,可以是一个普通的更新操作,如 {title: 'MongoDB 教程'},也可以使用操作符,如 { $set: {title: 'MongoDB 教程 v2' } }
  • upsert:可选参数,如果 updateOne() 无法找到匹配的文档并更新,则插入一条新的文档。默认为 false。
  • writeConcern:可选参数,写入操作的级别。默认为 MongoDB 实例的当前级别。
  • collation:可选参数,用于排序大小写敏感的字符串结果。
  • arrayFilters:可选参数,用于更新嵌套数组的单个匹配数组项。
返回值

updateOne() 方法返回的是一个 UpdateResult 对象,它包含了更新操作的一些基本信息和结果。

UpdateResult 对象的属性说明如下:

  • matchedCount:符合查询条件的文档数量。
  • modifiedCount:实际更新的文档数量。
  • upsertedId:如果设置了 upsert 参数并且创建了新的文档,则返回其 _id。
示例

以下示例演示了如何使用 updateOne() 方法更新集合中的一条文档。

db.collection('students').updateOne(
   { name: 'Foo' },
   { $set: { age: 20 } }
);

在这个示例中,我们使用了一个普通的查询条件 { name: 'Foo' } 和一个更新操作 $set: { age: 20 }。这意味着我们将更新集合中符合条件的文档,将 age 字段的值设置为 20

更新成功后,updateOne() 方法会返回一个 UpdateResult 对象,并将其赋值给一个变量。

const result = db.collection('students').updateOne(
   { name: 'Foo' },
   { $set: { age: 20 } }
);

我们可以使用这个 UpdateResult 对象来获得更新操作的结果信息。

console.log(`Matched Count: ${result.matchedCount}`);
console.log(`Modified Count: ${result.modifiedCount}`);
if (result.upsertedId) {
   console.log(`Upserted ID: ${result.upsertedId}`);
}

这个例子中,我们只更新了一条文档,因此 matchedCountmodifiedCount 的值都为 1。该示例中不使用 upsert 参数、writeConcern 参数和 collation 参数,因此结果中不包含这些信息。

总结

updateOne() 方法是 MongoDB 中一个常用的更新操作方法。在使用它时,我们需要提供查询条件和更新操作,并可以选择使用 upsert 参数、writeConcern 参数或 collation 参数。

使用 UpdateResult 对象,我们可以获得更新操作的结果信息,例如符合查询条件的文档数量、实际更新的文档数量和新插入文档的 _id。