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

Javascript 什么';添加从mongoDB删除记录的自动化流程的最佳方法是什么?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我目前有一个聊天机器人设置,可以将记录存储到MongoDB上。存储在Mongo中的对象看起来像 { ..., expiration_time: 12451525, ... } 其中,expiration\u time是以分钟表示的数字 我最初的方法是在web应用程序上使用setInterval查询数据库,删除符合当前时间大于或等于过期时间条件的所有记录。但是,我觉得当已经有其他操作(如读写数据)时,web应用程序会对数据库进行大量额外的查询 我读过关于在Mongo上存储函数的内容,但我知道如何

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

{ ..., expiration_time: 12451525, ... }
其中,
expiration\u time
是以分钟表示的数字

我最初的方法是在web应用程序上使用
setInterval
查询数据库,删除符合当前时间大于或等于过期时间条件的所有记录。但是,我觉得当已经有其他操作(如读写数据)时,web应用程序会对数据库进行大量额外的查询

我读过关于在Mongo上存储函数的内容,但我知道如何自动调用函数以自删除记录

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


提前谢谢

IMHO有两种选择:

  • 可以使用cronjob删除过期的条目
  • 一个人可以使用。它就像一个环形缓冲区,所以最早的条目将被覆盖。在这里,必须选择正确的固定大小的封顶集合。也就是说,如果聊天机器人每分钟向集合写入一次,则size=24*60=1440
  • 您可以使用:

    唯一的要求是
    expiration\u time
    必须是日期而不是整数

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


    MongoDB中有一个用于此目的的内置机制,名为。它似乎不会自行过期。@user3593810您是否已将旧文档的
    过期时间转换为最新日期?也来看看
    
    db.messages.createIndex( { "expiration_time": 1 }, { expireAfterSeconds: 0 } )