MongoDB updateOne() 方法 – db.Collection.updateOne()
在 MongoDB 中, updateOne()方法根据给定的查询更新集合中第一个匹配的文档。当您更新文档时,_id 字段的值保持不变。此方法一次更新一个文档,还可以在给定文档中添加新字段。它需要三个参数,第一个是更新文档的选择标准,第二个是要更新的新数据,其余的都是可选的。
- 此方法可以接受仅包含更新运算符表达式的文档。
- 这个方法也可以接受聚合管道。
- 在此方法中,如果共享集合的 upsert 值设置为 true,则您必须在过滤器/选择条件中包含完整的共享键。或者,如果 upsert 的值未设置为 true,则必须在 _id 字段中包含完全匹配项。
- 如果此操作更改了文档的大小,则更新操作将失败。
- 您也可以在多文档事务中使用此方法。
句法:
db.Collection_name.updateOne(
{Selection_Criteria}, {$set:{Update_data}},
{
upsert:
writeConcern:
collation:
arrayFilters: [
hint:
})
参数:
- 第一个参数是文档形式的旧值。文档是由文件和值对创建的结构,类似于 JSON 对象。
- 第二个参数必须包含$set关键字以更新以下指定文档值。
- 第三个参数是可选的。
可选参数:
- upsert:该参数的默认值为false。当它为真时,当没有文档与更新方法中的给定条件匹配时,它将在集合中创建一个新文档。
- writeConcern:仅在您不想使用默认写关注时使用。该参数的类型是文档。
- collation:指定操作使用的排序规则。它允许用户为字符串比较指定特定于语言的规则,例如字母和重音标记的规则。该参数的类型是文档。
- arrayFilters:它是一个过滤器文档数组,用于指示要修改哪些数组元素以对数组字段进行更新操作。这个参数的类型是一个数组。
- 提示:它是一个文档或字段,指定用于支持过滤器的索引。它可以采用索引规范文档或索引名称字符串,如果您指定的索引不存在,则会给出错误。
返回:
此方法返回包含以下字段的文档:
- nMatched:该字段包含匹配文档的数量。
- modifiedCount:该字段包含修改文档的数量。
- upsertedId:此字段包含更新文档的 _id。
- 确认:如果启用了写关注,则此字段的值为真,如果禁用了写关注,则此字段的值为 false。
例子:
在以下示例中,我们正在使用:
Database: gfg
Collection: student
Document: Four documents contains name and age of the students
示例 1:更新名为 Annu 的学生的年龄
db.student.updateOne({name: "Annu"}, {$set:{age:25}})
这里,第一个参数是要改变其值的文档{name:”Annu”},第二个参数是set关键字,意思是用旧的键值设置(更新)后面第一个匹配的键值,即从20到24.
示例二:将第一个匹配的名为 Bhannu 的文档的名称更新为 Babita
db.student.updateOne({name:"Bhannu"},{$set:{name:"Babita"}})
这里,第一个参数是要更改其值的文档 {name:”Bhannu”},第二个参数是 set 关键字,意思是用旧的键值设置(更新)接下来的第一个匹配的键值。
注意:此处,键的值必须与集合中定义的数据类型相同。
示例 3:使用 updateOne 方法在文档中插入一个新字段
db.student.updateOne({name: "Bhannu"}, {$set:{class: 3}})
在这里,在名为 Bhannu 的学生的文档中添加了一个新字段,即 class: 3。