MongoDB updateMany() 方法 – db.Collection.updateMany()
updateMany()方法更新 MongoDB 集合中与给定查询匹配的所有文档。更新文档时,_id 字段的值保持不变。此方法还可以在文档中添加新字段。在选择标准中指定一个空文档 ( {} ) 以更新所有集合文档。
- 此方法可以接受仅包含更新运算符表达式的文档。
- 这个方法也可以接受聚合管道。
- 在此方法中,如果共享集合的 upsert 值设置为 true,则您必须在过滤器/选择条件中包含完整的共享键。
- 如果此操作更改了文档的大小,则更新操作将失败。
- 您也可以在多文档事务中使用此方法。
句法:
db.Collection_name.updateMany({Selection_Criteria},{$set:{Update_Data}},
{
upsert:
multi:
writeConcern:
collation:
arrayFilters: [
hint:
})
参数:
- 第一个参数是文档形式的旧值。文档是由文件和值对创建的结构,类似于 JSON 对象。指定一个空文档 ( {} ) 以更新集合中的所有文档。
- 第二个参数必须包含$set关键字以更新以下特定文档值。
- 第三个参数是可选的。
可选参数:
- Upsert:该参数的默认值为false。当它为真时,当没有文档匹配更新方法中的给定条件时,它将在集合中创建一个新文档。
- Multi:该参数的默认值为false。当它为真时,update 方法更新所有满足查询条件的文档。否则,它只会更新一个文档。
- writeConcern:仅在您不想使用默认写关注时使用。该参数的类型是文档。
- 排序规则:它指定使用排序规则进行操作。它允许用户为字符串比较指定特定于语言的规则,如字母和重音符号。该参数的类型是文档。
- arrayFilters:它是一个过滤器文档数组,用于指示要修改哪些数组元素以对数组字段进行更新操作。这个参数的类型是一个数组。
- 提示:它是指定用于支持过滤器的索引的文档或字段。它可以采用索引规范文档或索引名称字符串,如果您指定的索引不存在,则会报错。
返回:
此方法返回包含以下字段的文档:
- matchedCount:该字段包含匹配文档的数量。
- modifiedCount:该字段包含修改文档的数量。
- upsertedId:此字段包含更新文档的 _id。
- 确认:如果启用了写关注,则此字段的值为真,如果禁用了写关注,则此字段的值为 false。
例子:
在以下示例中,我们正在使用:
Database: gfg
Collection: student
Document: Three documents contains name and age of the students
更新单个文档
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})
在这里,我们更新与给定条件匹配的所有文档。