2014-11-25 65 views
2

我目前正在开发一个以MongoDB作为数据库系统的node.js服务器。在特定时间后自动更新猫鼬文档(node.js)对象的属性

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

那么,有没有类似的东西,以一个文件的一定时间后设置属性,例如布尔“isActive”从真到假?

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

谢谢!

回答

2

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

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

添加一个索引日期字段,例如命名为:inactiveAfter

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

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