我目前正在使用MongoDB作为数据库系统开发node.js服务器。
我知道,mongodb有一段TTL(生存时间)和“过期”,可以在一定时间后删除文件。我的问题是,我不想删除文档,我只想将它们设置为“非活动”。
那么,在文档的某个时间之后设置属性是否类似,例如从true到false的布尔“isActive”?
是否有任何常见的MongoDB或node.js方法可以做到这一点?
谢谢!
答案 0 :(得分:3)
MongoDB中没有(延迟时间)触发器自动触发这样的动作。
TTL功能每分钟只运行一个作业,检查日期(在索引中)并确定应删除的内容。对于您的应用程序,您可以构建类似的东西。
添加索引日期字段,例如:inactiveAfter
。
每分钟(或其他某个时段,取决于您的数据库大小)运行作业,以更新将过期的文档({$set: {status:"inactive", inactiveAfter: null}}
)。出于性能原因,请确保查询仅需要触摸索引。不要忘记设置{multi: true}
。
安排工作可以通过多种方式完成,但是一个简单的cronjob就可以完成这项工作。除了主节点服务器之外,我将此任务放在一个单独的项目中。