MongoDB TTL但要做其他事情

时间:2018-07-26 03:37:52

标签: mongodb database-trigger ttl

我有一个要求,当传递日期属性字段时,我们想触发两件事:

  1. 将要删除的记录移到另一个表中。
  2. 调用一个函数执行其他操作。

我了解TTL仅在日期字段被触发时才删除记录。我可以附加一些逻辑吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我建议编写一个函数,然后通过调度程序调用它。那将是更好的选择。

答案 1 :(得分:0)

根据要求,可以有很多方法可以做到这一点。

一种方法是定期执行脚本,然后运行查询以筛选已通过特定日期值的文档。对于每个文档,请执行文档迁移到另一个表的操作,并执行其他操作。

或者使用MongoDB Change Streams。但是,窍门在于,变更流中的delete events不会返回文档本身(因为它已被删除)。

相反,如果您要更新已通过特定日期值的文档的字段,则可以收听update events。例如,将字段值设置为expired:true

值得一提的是,如果您沿着变更流更新事件的路线前进,则可以利用MongoDB Stitch Triggers(依靠变更流)。 MongoDB Stitch数据库触发器可让您自动执行Stitch functions以响应MongoDB数据库中的更改。