在一定时间后自动更新mongoose文件(node.js)对象的属性

我目前正在用MongoDB开发一个node.js服务器作为数据库系统。

我知道,有一个TTL(生存时间)和“过期”mongodb一段时间后删除文件。 我的问题是,我不想删除文件,我只是想将它们设置为“不活动”。

那么,在文档的某个特定时间之后是否有类似的属性来设置属性,例如布尔型“isActive”是否为true?

有没有常见的MongoDB或node.js方法来做到这一点?

谢谢!

在MongoDB中没有(时间延迟)触发器来自动触发这样的动作。

TTLfunction只是每分钟运行一个作业,检查date(在索引中)并确定应该删除的内容。 对于你的应用程序,你可以build立类似的东西。

添加一个索引date字段,例如named: inactiveAfter

每分钟(或其他一些时间,取决于你的数据库大小)运行一个作业,更新文件( {$set: {status:"inactive", inactiveAfter: null}} )将会过期。 出于性能原因,请确保查询只需要触摸索引。 不要忘记设置{multi: true}

调度你的工作可以用很多方法完成,但是一个简单的cronjob可以完成这项工作。 除了主要的节点服务器,我会把这个任务放在一个单独的项目中。