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



我目前有一个聊天机器人设置,可以将记录存储到MongoDB上。存储在 Mongo 中的对象看起来像...

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

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

我最初的方法是在 Web 应用程序上使用setInterval来查询数据库,以删除与当前时间大于或等于过期时间的条件匹配的所有记录。但是,我觉得当已经有其他操作(例如读取和写入数据(时,Web应用程序会对数据库进行大量其他查询。

我读过有关将函数存储到 Mongo 上的信息,但我确定如何自动执行调用函数以自行删除记录的过程。

我肯定会喜欢任何反馈、方法或最佳实践指南。

提前感谢!

您可以使用 TTL 索引:

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

唯一的要求是expirtion_time必须是日期而不是整数。

若要在特定时钟时间使文档过期,请首先在保存 BSON 日期类型值的字段上创建 TTL 索引

恕我直言,有 2 个选项:

  1. 可以使用 cronjob 删除过期的条目
  2. 可以使用上限集合。它就像一个环形缓冲区,因此最旧的条目将被覆盖。在这里,必须为有上限的集合选择正确的固定大小。即,如果聊天机器人每分钟写入集合,则大小 = 24 * 60 = 1440。

相关内容

最新更新