在某个ttl指定的nodejs之后存档文章

时间:2017-08-14 07:52:13

标签: node.js mongodb mongoose

所以我有两个系列。

  1. active_posts collection

  2. archived_posts collection

  3. 我想知道是否有一个npm模块或mongo功能可以让活动帖子在存活(或发布)20天后移动到存档集合。

    我的帖子架构是这个(临时):

    var postSchema = new Schema({
      title: {type:String},
      created_time: {type: Date, default: Date.now},
      archived: {type: Boolean, default:false}
    });
    

1 个答案:

答案 0 :(得分:1)

MongoDB中没有时间触发器默认执行此操作

以下是一些解决方法:

1。后台服务存档

您可以使用调度程序重复运行(让我们说每5分钟一次)并检查已经通过其TTL的 active_posts 集合中的文档,然后将它们传输到 archived_posts 集合。

阅读以下Stack Overflow帖子,找到Node.js的一些调度库:
Is there a job scheduler library for node.js?

以下是一些仅列举一些的图书馆:node-cronnode-scheduleAgenda,...

2。预定(延迟)存档

您可以在创建时为每个文档计划存档作业。

除了上面提到的库之外,您还可以使用Kue,它可以选择在一定时间内安排一次作业。

提示: MongoDB具有内置功能,可以在文档通过TTL后删除它们,您可能会发现它与这些方法结合使用很有用。 但请谨慎使用!
您可以在official documentation和以下Stack Overflow帖子中阅读相关内容:
Delete MongoDB document at specific time