【问题标题】:How can i retrieve modified documents after an update operation in mongodb with pymongo?如何在 mongodb 中使用 pymongo 进行更新操作后检索修改后的文档?
【发布时间】:2013-10-17 12:34:49
【问题描述】:

我正在使用带有 upsert 的更新操作。我想检索更新后已修改的所有文档。

for key in categories_links:
    collection.update({"name" : key}, {"name": key ,"url" : categories_links[key]}, True)

【问题讨论】:

  • 不明白你的问题。您可以以某种方式标记更新的对象。

标签: mongodb pymongo


【解决方案1】:

如果您需要查找更新的时间和地点,您应该在文档中使用时间戳字段。有一个BSON type for that

【讨论】:

    【解决方案2】:

    据我所知,pymongo 不会返回已被更新修改的所有记录的列表。

    但是,如果您使用的是副本集,则可以通过查看 oplog 来完成此操作。

    根据文档:

    oplog 必须将多重更新转换为单独的操作 为了保持幂等性。这可以使用大量的oplog 没有相应增加数据大小或磁盘使用的空间。

    如果您想跟踪每个正在更新的元素,您可以改为执行 find(),然后循环遍历这些元素以对每个元素执行单独的 update()。显然,这会慢得多,但可能会根据您的特定用例进行权衡。

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 2017-01-07
      • 2021-02-23
      • 2015-05-27
      • 1970-01-01
      • 2012-12-07
      • 2021-11-30
      • 2015-08-27
      • 1970-01-01
      相关资源
      最近更新 更多