所以我有两个系列。
active_posts collection
archived_posts collection
我想知道是否有一个npm模块或mongo功能可以让活动帖子在存活(或发布)20天后移动到存档集合。
我的帖子架构是这个(临时):
var postSchema = new Schema({
title: {type:String},
created_time: {type: Date, default: Date.now},
archived: {type: Boolean, default:false}
});
答案 0 :(得分:1)
MongoDB中没有时间触发器默认执行此操作 。
以下是一些解决方法:
您可以使用调度程序重复运行(让我们说每5分钟一次)并检查已经通过其TTL的 active_posts 集合中的文档,然后将它们传输到 archived_posts 集合。
阅读以下Stack Overflow帖子,找到Node.js的一些调度库:
Is there a job scheduler library for node.js?
以下是一些仅列举一些的图书馆:node-cron,node-schedule,Agenda,...
您可以在创建时为每个文档计划存档作业。
除了上面提到的库之外,您还可以使用Kue,它可以选择在一定时间内安排一次作业。
提示强>:
MongoDB具有内置功能,可以在文档通过TTL后删除它们,您可能会发现它与这些方法结合使用很有用。 但请谨慎使用!
您可以在official documentation和以下Stack Overflow帖子中阅读相关内容:
Delete MongoDB document at specific time