📜  MongoDB updateMany() 方法 – db.Collection.updateMany()

📅  最后修改于: 2022-05-13 01:56:58.426000             🧑  作者: Mango

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

updateMany()方法更新 MongoDB 集合中与给定查询匹配的所有文档。更新文档时,_id 字段的值保持不变。此方法还可以在文档中添加新字段。在选择标准中指定一个空文档 ( {} ) 以更新所有集合文档。

  • 此方法可以接受仅包含更新运算符表达式的文档。
  • 这个方法也可以接受聚合管道。
  • 在此方法中,如果共享集合的 upsert 值设置为 true,则您必须在过滤器/选择条件中包含完整的共享键。
  • 如果此操作更改了文档的大小,则更新操作将失败。
  • 您也可以在多文档事务中使用此方法。

句法:

参数:

  • 第一个参数是文档形式的旧值。文档是由文件和值对创建的结构,类似于 JSON 对象。指定一个空文档 ( {} ) 以更新集合中的所有文档。
  • 第二个参数必须包含$set关键字以更新以下特定文档值。
  • 第三个参数是可选的。

可选参数:



  • Upsert:该参数的默认值为false。当它为真时,当没有文档匹配更新方法中的给定条件时,它将在集合中创建一个新文档。
  • Multi:该参数的默认值为false。当它为真时,update 方法更新所有满足查询条件的文档。否则,它只会更新一个文档。
  • writeConcern:仅在您不想使用默认写关注时使用。该参数的类型是文档。
  • 排序规则:它指定使用排序规则进行操作。它允许用户为字符串比较指定特定于语言的规则,如字母和重音符号。该参数的类型是文档。
  • arrayFilters:它是一个过滤器文档数组,用于指示要修改哪些数组元素以对数组字段进行更新操作。这个参数的类型是一个数组。
  • 提示:它是指定用于支持过滤器的索引的文档或字段。它可以采用索引规范文档或索引名称字符串,如果您指定的索引不存在,则会报错。

返回:

此方法返回包含以下字段的文档:

  • matchedCount:该字段包含匹配文档的数量。
  • modifiedCount:该字段包含修改文档的数量。
  • upsertedId:此字段包含更新文档的 _id。
  • 确认:如果启用了写关注,则此字段的值为真,如果禁用了写关注,则此字段的值为 false。

例子:

在以下示例中,我们正在使用:

更新单个文档

db.student.updateMany({name: "aaksh"}, {$set:{age: 20}})

在这里,我们使用 updateMany() 方法将名为 aaksh 的学生的年龄从 15 更新到 20。

更新多个文档

db.student.updateMany({age:18},{$set:{eligible:"true"}})

在这里,我们将年龄为 18 岁的所有匹配文档更新为合格:true

使用 upsert 更新文档

db.student.updateMany({age: 18}, {$set: {eligible: false}}, {upsert: true})

在这里,我们更新与给定条件匹配的所有文档。