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

bas*_*god 5 mongodb node.js

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

我知道,mongodb具有TTL(生存时间)和“到期时间”,以便在一定时间后删除文档。我的问题是,我不想删除文档,我只想将它们设置为“非活动”。

那么,在文档的特定时间之后是否有类似设置属性的方法,例如从true到false的布尔值“ isActive”?

是否有任何常用的MongoDB或node.js方法来做到这一点?

谢谢!

Rik*_*kus 3

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

TTL 功能只是每分钟运行一个作业来检查日期(在索引中)并确定应删除的内容。对于您的应用程序,您可以构建类似的东西。

添加索引日期字段,名称例如:inactiveAfter

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

可以通过多种方式来安排您的工作,但一个简单的 cronjob 就可以完成这项工作。我会将此任务放在一个单独的项目中,除了主节点服务器之外。