PyMongo for MongoDB 中 find_one_and_update() 和 update_one() 之间的区别?

Nic*_*ini 5 mongodb pymongo

以下是参考资料:

查找单个文档并更新它,返回原始文档或更新后的文档。

更新与过滤器匹配的单个文档。

在我看来,他们都首先查询所选文档,然后更新它。

我想知道是否存在某种优化差异。唯一的另一个区别是返回值,这让我想知道为什么人们甚至会使用它update_one()

小智 8

这两个操作之间有一些变化:

  • find_one_and_update

默认情况下 :meth:find_one_and_update返回应用更新之前文档的原始版本。要返回文档的更新版本,请使用return_document选项。

您可以限制使用投影选项返回的字段。

如果文档尚不存在,可使用upsert选项来创建该文档。

如果多个文档匹配过滤器,则可以应用排序。

因此,此方法执行一种find允许您对数据库中的记录进行排序和过滤的操作。

  • update_one

使用此方法,您无法对记录进行排序,它只是执行find操作并用for循环更新每个找到的元素。

所以最后我认为update_one操作比操作更快find_one_and_update