在Meteor应用程序中的特定时间段之后删除mongo条目

时间:2014-10-08 00:07:19

标签: mongodb meteor

我有一个时间敏感数据库。是否有最佳实践"在x时间后删除一个条目?大概30分钟,但也许24小时。我已经考虑了间隔和内容,但这似乎是一种懒惰的解决方案,会迅速占用资源。

1 个答案:

答案 0 :(得分:2)

间隔是正确的解决方案。但是,为了不占用资源,以及防止服务器重启,请不要为要删除的每个元素创建新的间隔。相反,运行一个全局间隔,它将清除给定时间段内的所有元素:

var clear = function() {
  var min = new Date(new Date() - DURATION);
  Documents.remove({
    createdAt: {$lt: min}
  });
};


Meteor.startup(function() {
  clear();
  Meteor.setInterval(clear, INTERVAL);
});

其中DURATION是文档应保留在数据库中的最小毫秒数,而INTERVAL是您希望执行清除的频率。