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

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

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

在 MongoDB 中, updateOne()方法根据给定的查询更新集合中第一个匹配的文档。当您更新文档时,_id 字段的值保持不变。此方法一次更新一个文档,还可以在给定文档中添加新字段。它需要三个参数,第一个是更新文档的选择标准,第二个是要更新的新数据,其余的都是可选的。

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

句法:

参数:

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

可选参数:



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

返回:

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

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

例子:

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

示例 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。