【问题标题】:How to automatically update date fields in mongoDB collection on insert/update documents?如何在插入/更新文档上自动更新 mongoDB 集合中的日期字段?
【发布时间】:2020-01-09 00:36:15
【问题描述】:

我将 MongoDB v3.6.3 与 PyMongo 一起使用。
这是我的文档结构:

{
  "process_id": number,
  "created_dttm": date,
  "updated_dttm": date
}

我想做两件事:

  1. 每当插入新文档时,created_dttmupdated_dttm 都应具有当前系统日期。
  2. 每当更新现有文档时,updated_dttm 应更新为当时的当前系统日期

我通过覆盖 save() 和 update() 方法使用 MongoEngine 模型完成了这项工作。

除了在插入/更新时以编程方式显式处理此问题之外,还有其他方法可以使用 PyMongo 执行此操作吗?

【问题讨论】:

    标签: python-3.x mongodb pymongo mongoengine


    【解决方案1】:

    不幸的是,这并不是 mongodb/pymongo 开箱即用的。您唯一得到的是,如果您使用 ObjectId 作为文档的主键,您可以使用

    从中提取时间戳
    oid = ObjectId()
    oid.generation_time    # is a datetime.datetime
    

    对于更新时间戳,您需要在应用程序代码中进行处理。通常有两种方法可以做到这一点,要么发出并存储 audit events 在单独的集合中,要么包装更新方法并在每次调用时修改 last_update_timestamp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 2020-07-25
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多