作为标题,如何在使用流星的mongodb收集后的某些天后自动删除文件?
Mongodb有expire data功能,但如何让它与流星一起使用?目前有可能吗?
谢谢你......答案 0 :(得分:0)
您可以使用Meteor.setTimeout()
在服务器上设置超时。
您还可以使用cron任务执行此操作以及可帮助您完成cron任务的软件包,例如:percolate:synced-cron
(https://atmospherejs.com/percolate/synced-cron)
如果日期很远,您将无法使用Meteor.setTimeout()
。在这些情况下你应该做的是运行一个可能每24小时运行一次的cron任务。在此cron任务中,您可以检查在接下来的24小时内需要删除哪些文档,并设置超时以删除该24小时内的相应文档。
答案 1 :(得分:0)
您可以通过创建TTL索引使MongoDB中的数据到期。如果您在MongoDB shell中运行以下脚本,{1}}条目将在一小时后自动删除:
log_events
此功能使用mongod中的后台线程来读取索引中的日期类型值并从集合中删除过期的文档,因此它独立于Meteor工作。为了完整起见,为了使其正常工作,您需要在添加新文档时将createdAt设置为当前时间:
db.log_events.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )