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

时间:2014-11-25 13:43:39

标签: node.js mongodb

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

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

那么,在文档的某个时间之后设置属性是否类似,例如从true到false的布尔“isActive”?

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

谢谢!

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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