您的位置:首页技术文章
文章详情页

node.js - mongo TTL 数据过期不删除

【字号: 日期:2024-07-16 11:43:41浏览:58作者:猪猪

问题描述

使用 mongoose 可以成功为某个 document 添加过期时间:node.js - mongo TTL 数据过期不删除

node.js - mongo TTL 数据过期不删除

但是,数据在设置的过期时间之后仍然没有删除,官方的文档说mongo后台服务每隔一分钟轮询一次过期设置,但这已经不是几分钟延迟的事了,感觉上是expire没有生效的

问题解答

回答1:

这个问题我自己解决了,重新看了下官方文档 https://docs.mongodb.com/manu...

schema定义的索引必须与实际的数据相对应。

let myschema = new mongoose.Schema({ phone: {type: String,required: true }, code: {type: String,required: true }, createAt: {type: Date,default: Date.now(),index: { expires: 60*1 } //设置验证码的有效时间为 10 分钟 }}, {collection: ’sms’} ); let MyModel = db.model(’MyModel’, myschema); let arr = {phone: req.body.phone,code: code,createAt: Date.now() }

schema 中的 createAt 必须与 arr 中的 createAt 对应,且必须给定时间,这样才会生效。

回答2:

let mySchema = new mongoose.Schema(...)试试?

回答3:

几点建议:

1、先检查一下索引的实际TTL情况;您贴出来的部分,感觉上面代码和下面的截图不一致

2、看看server.Status中的ttl的部分

db.serverStatus().metrics.ttl

供参考。

Love MongoDB!Have fun!

相关文章: