所以我有两个收藏。
active_posts 集合
archived_posts 集合
我想知道是否有一个 npm 模块或 mongo 功能可以让事件帖子在其生存(或发布)20 天后移动到存档集合。
我的帖子架构是这样的(临时):
var postSchema = new Schema({
title: {type:String},
created_time: {type: Date, default: Date.now},
archived: {type: Boolean, default:false}
});
最佳答案
默认情况下 MongoDB 中没有时间触发器来执行此操作。
以下是一些解决方法:
1。后台服务归档
您可以使用调度程序重复运行(假设每 5 分钟一次)并检查 active_posts 集合中已超过 TTL 的文档,然后将它们传输到您的 archived_posts 集合。
阅读以下 Stack Overflow 帖子,查找 Node.js 的一些调度库:
Is there a job scheduler library for node.js?
以下是一些库:node-cron , node-schedule , Agenda ,...
2。计划(延迟)归档
您可以在创建每个文档时安排归档作业。
除了上面提到的库之外,您还可以使用Kue它有一个选项可以安排作业在特定时间完成一次。
<小时/>提示:
MongoDB 有一个内置功能,可以在文档通过 TTL 后删除文档,您可能会发现它与这些方法结合使用很有用。 但请谨慎使用!
您可以在official documentation中阅读相关内容。 ,以及以下 Stack Overflow 帖子中:
Delete MongoDB document at specific time
关于node.js - 在指定nodejs的某个ttl后归档文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45669818/