Xml MeteorJS:保存API调用结果最多24小时

Xml MeteorJS:保存API调用结果最多24小时,xml,mongodb,meteor,Xml,Mongodb,Meteor,我正在开发一个使用XML数据源的小应用程序。我希望获取返回的XML数据并将其保存在我的MongoDB中,这样我就可以用信息(分页等)填充模板 获取XML数据不是问题,我只是不确定如何使信息过期,或者即使这是最好的选择,您也可以为每个文档添加时间戳,然后定期删除超过一天的文档。在本例中,我假设您的集合名为Feed 插入新文档时: Feed.insert({data:'…',createdAt:new Date()}); 稍后,您可以在服务器上运行此操作: var cleanupFeed=func

我正在开发一个使用XML数据源的小应用程序。我希望获取返回的XML数据并将其保存在我的MongoDB中,这样我就可以用信息(分页等)填充模板


获取XML数据不是问题,我只是不确定如何使信息过期,或者即使这是最好的选择,您也可以为每个文档添加时间戳,然后定期删除超过一天的文档。在本例中,我假设您的集合名为
Feed

插入新文档时:

Feed.insert({data:'…',createdAt:new Date()});
稍后,您可以在服务器上运行此操作:

var cleanupFeed=function(){
var now=新日期().valueOf();
var昨天=新日期(现在为-86400*1000);
删除({createdAt:{$lt:forday});
};
定期运行
cleanupFeed
的一个简单方法就是使用。有关任务调度的更多想法,请参阅。

Dennis

在这种情况下,您有两个选项:

  • 基于应用程序的过期(添加时间戳字段,定期查询并删除这些文档)。我通常不建议这样做,因为这会给应用程序增加很多开销
  • 如果您使用的是MongoDB 2.2或更高版本,最好的选择是使用
  • TTL索引每60秒运行一次后台任务来删除过期文档,因此可以有效地分散删除的影响

    有两种方法可以使用TTL到期:

  • 第一种方法可能更适合您的用例。您可以使用类似以下内容设置24小时到期:

    db.api.results.ensureIndex( { "createdAt": 1 }, { expireAfterSeconds: 86400 } )