从mongoDB删除logging添加自动化过程的最佳方法是什么?

我目前有一个聊天机器人设置将logging存储到MongoDB。 存储在Mongo中的对象看起来像…

{ ..., expiration_time: 12451525, ... } 

其中expiration_time是以分钟表示的数字。

我最初的方法是在Web应用程序上使用setInterval来查询数据库,以删除所有符合当前时间标准的logging大于或等于过期时间。 然而,当我们已经有其他的操作,比如读写数据时,我觉得Web应用程序会对数据库进行大量的附加查询。

我读了关于将函数存储到Mongo中,但我确定如何自动执行调用函数来自我删除logging的过程。

我绝对会喜欢任何有关最佳实践的反馈,方法或准则。

提前致谢!

您可以使用TTL索引 :

 db.messages.createIndex( { "expiration_time": 1 }, { expireAfterSeconds: 0 } ) 

唯一的要求是expirtion_time必须是一个date而不是一个整数。

要在特定时钟时间到期文档,首先在保存BSONdatetypes值的字段上创build一个TTL索引

恕我直言,有2个选项:

  1. 可以使用cronjob删除过时的条目
  2. 可以使用Capped Collections 。 这就像一个环形缓冲区,所以最旧的条目将被覆盖。 在这里,您必须select加盖集合的正确大小。 即,如果聊天机器人每分钟写入集合,大小= 24 * 60 = 1440。