【问题标题】:Differences between find_one_and_update() and update_one() in PyMongo for MongoDB?PyMongo for MongoDB 中的 find_one_and_update() 和 update_one() 之间的区别?
【发布时间】:2019-01-30 00:33:45
【问题描述】:

以下是参考:

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

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

在我看来,他们俩都是先查询选定的文档,然后再更新它。

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

【问题讨论】:

标签: mongodb pymongo


【解决方案1】:

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

  • 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 操作

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 2011-06-11
    • 2020-07-04
    • 2012-12-04
    • 1970-01-01
    相关资源
    最近更新 更多