查看了MongoDB和Mongoose文档,看不出这是否可行。我会事先告诉你我还没有写过任何代码试图做到这一点,因为我找不到任何东西可以用来代替它。
我正在寻找的是在MongoDB文档上设置TTL过期(如果重要的话,通过Mongoose插入),我希望应用程序在文档从集合中弹出时收到通知。有没有办法在MongoDB中使用本机,或者我必须自己做一些事情(例如民意调查)?
答案 0 :(得分:2)
当通过TTL索引删除MongoDB文档时,您的应用程序没有服务器端挂钩通知。
但是,TTL索引只是服务器端TTL线程使用的基于日期的索引,该线程每分钟唤醒并删除符合到期条件的新文档。
如果你想添加某种on-delete钩子,我建议你写一个你自己的到期脚本,并通过cron
或同等程序将其作为计划任务运行。此脚本可以首先运行查询以查找准备过期的匹配文档,然后在实际删除文档之前实现应用程序所需的任何通知。
答案 1 :(得分:1)
这里的a mongoose plugin可以帮到你。它实现了TTL功能,并在每次执行收割机时调用onReap
函数。
var ttl = require('mongoose-ttl');
var schema = new Schema({..});
schema.plugin(ttl, {
ttl: 'the time each doc should live in the db (default 60 seconds)',
interval: 'how often the expired doc reaper runs (default 5 mins)',
onReap: 'callback passed to reaper execution'
});
应该提到此插件不使用本机MongoDB TTL功能。