如何自动更新 insert/update 文档的 mongoDB 集合中的日期字段?

How to automatically update date fields in mongoDB collection on insert/update documents?

我正在使用 MongoDB v3.6.3 和 PyMongo。
这是我的文档结构:

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

我想做两件事:

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

我已经使用 MongoEngine 模型通过覆盖 save() 和 update() 方法完成了此操作。

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

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

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

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