如何自动更新 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
}
我想做两件事:
- 每当插入新文档时,created_dttm 和 updated_dttm 应该具有当前系统日期。
- 每当更新现有文档时,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
。
我正在使用 MongoDB v3.6.3 和 PyMongo。
这是我的文档结构:
{
"process_id": number,
"created_dttm": date,
"updated_dttm": date
}
我想做两件事:
- 每当插入新文档时,created_dttm 和 updated_dttm 应该具有当前系统日期。
- 每当更新现有文档时,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
。