node.js - mongo TTL 資料過期不刪除
伊谢尔伦
伊谢尔伦 2017-05-17 09:56:31
0
3
1084

使用 mongoose 可以成功為某個 document 新增過期時間:

#但是,資料在設定的過期時間之後仍然沒有刪除,官方的文檔說mongo後台服務每隔一分鐘輪詢一次過期設置,但這已經不是幾分鐘延遲的事了,感覺上是expire沒有生效的

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(3)
漂亮男人

這個問題我自己解決了,重新看了下官方文檔 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 對應,且必須給定時間,這樣才會生效。

曾经蜡笔没有小新

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

大家讲道理

幾點建議:

1、先檢查索引的實際TTL情況;您貼出來的部分,感覺上面程式碼和下面的截圖不一致

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

db.serverStatus().metrics.ttl

供參考。

Love MongoDB! Have fun!

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板