如何在插入/更新文档上自动更新mongoDB集合中的日期字段?

时间:2019-09-06 06:32:51

标签: python-3.x mongodb pymongo mongoengine

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

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

我想做两件事:

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

我使用MongoEngine模型通过覆盖save()和update()方法来做到这一点。

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

1 个答案:

答案 0 :(得分:0)

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

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

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