node.js - 在指定nodejs的某个ttl后归档文章

标签 node.js mongodb mongoose

所以我有两个收藏。

  1. active_posts 集合

  2. 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/

相关文章:

node.js - Ctrl+C 不会在 VS Code 的命令行中停止 Node 服务器

mysql - 从MySQL开始,以后改成MongoDB?

node.js - 我将如何使用 Mongoose 创建和更新时间序列?

node.js - MongoDB聚合,nodejs用AND & OR生成动态查询

arrays - Mongoose 枚举字符串数组验证?

node.js - Mongoose 流第一次返回很少的结果

node.js - 如何监视 node.js 中定义的变量

node.js - 我有两个 Node js 服务器。第二个服务器用于套接字连接。如何在这两个服务器之间建立连接?

javascript - 将先前 promise 中的数据放入新 promise 中

java - 如何在mongo中插入带有日期的文档?