📜  MongoDB – db.collection.findOneAndReplace() 方法

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

MongoDB – db.collection.findOneAndReplace() 方法

findOneAndReplace()方法根据给定的选择标准替换第一个匹配的文档。默认情况下,此方法返回原始文档。要返回替换文档,请将 returnNewDocument 选项的值设置为 true。它需要八个参数,第一个参数是选择标准,第二个参数是替换文档。其他都是可选的。使用此方法您还可以替换嵌入的文档。您也可以在多文档交易中使用此方法。

句法:

参数:

  • 第一个参数是用新文档替换文档的选择标准。
  • 第二个参数是替换文档。
  • 第三个参数是可选的。

可选参数:

  • 投影:该参数的类型是文档。它确定哪些字段返回到匹配的文档。本文档需要:
{ field1: , field2:  ... }

这里如果字段的值为1/true则指定包含该字段,或者如果该字段的值为0/false则指定排除该字段。

  • sort:如果查询选择多个文档,它决定了操作将修改哪个文档。 findOneAndReplace() 将按此参数指定的排序顺序替换第一个文档。该参数的类型是文档。
  • maxTimeMS:该参数的类型为数字。它指定操作必须完成的时间限制(以毫秒为单位)。如果超过时间限制,它会抛出错误。
  • upsert:该参数的默认值为false。如果此选项的值设置为 true 并且没有文档与给定的过滤器查询匹配,则此方法根据替换参数创建一个新文档并返回 null(插入新文档后),除非 returnNewDocument 选项的值设置为 true .或者,如果此 upsert 选项的值设置为 true,则此方法将与给定过滤器查询匹配的文档替换为替换文档。
  • returnNewDocument:该参数的类型是布尔值。默认情况下,此方法返回原始文档。要返回替换文档,请使用 returnNewDocument 选项并将其值设置为 true。
  • 排序规则:它指定使用排序规则进行操作。它允许用户为字符串比较指定特定于语言的规则,例如字母和重音标记的规则。该参数的类型是文档。

返回:

默认情况下,此方法返回原始文档。要返回替换文档,请使用 returnNewDocument 选项并将其值设置为 true。

例子:

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

  • 替换第一个匹配的年龄为 17 的文档并返回替换的文档:
db.student.findOneAndReplace({age:17},{name:"Mihir", age:17})

在这里,我们从学生集合中找到与给定过滤器查询(即年龄:17)匹配的文档,然后使用新文档(即{name:”Mihir”,年龄:17})替换匹配的文档findOneAndReplace() 方法。在这里,此方法返回原始文档。

更换后:

  • 替换第一个匹配的年龄为 17 的文档并返回一个新文档:
db.student.findOneAndReplace({age:17},{name:"Sagar", age:17},
                             {returnNewDocument:true})

在这里,我们从学生集合中找到与给定过滤器查询(即年龄:17)匹配的文档,然后使用新文档(即{name:”Sagar”,年龄:17})替换匹配的文档findOneAndReplace() 方法。此处,此方法返回新文档,因为 returnNewDocument 选项的值设置为 true。

更换后: