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

时间:2018-08-23 15:13:30

标签: mongodb pymongo

以下是以下内容的参考:

  

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

  

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

在我看来,他们俩都首先查询所选文档,然后对其进行更新。

我想知道是否存在某种优化差异。唯一的不同之处在于返回值,这使我想知道为什么一个人甚至根本不使用update_one()

1 个答案:

答案 0 :(得分:2)

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

  • find_one_and_update
  

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

     

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

     

upsert 选项可用于创建文档(如果未创建)           已经存在。

     

如果多个文档与 filter 匹配,则可以应用 sort

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

  • update_one

使用这种方法无法对记录进行排序,它仅执行find操作并以for周期更新找到的每个元素。

因此,最后我认为update_one操作比find_one_and_update操作更快