使用 mongoose 可以成功為某個 document 新增過期時間:
#但是,資料在設定的過期時間之後仍然沒有刪除,官方的文檔說mongo後台服務每隔一分鐘輪詢一次過期設置,但這已經不是幾分鐘延遲的事了,感覺上是expire沒有生效的
小伙看你根骨奇佳,潜力无限,来学PHP伐。
這個問題我自己解決了,重新看了下官方文檔 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(...)試試?
let mySchema = new mongoose.Schema(...)
幾點建議:
1、先檢查索引的實際TTL情況;您貼出來的部分,感覺上面程式碼和下面的截圖不一致
2、看看server.Status中的ttl的部分
db.serverStatus().metrics.ttl
供參考。
Love MongoDB! Have fun!
這個問題我自己解決了,重新看了下官方文檔 https://docs.mongodb.com/manu...
schema定義的索引必須與實際的資料相對應。
schema 中的 createAt 必須與 arr 中的 createAt 對應,且必須給定時間,這樣才會生效。
let mySchema = new mongoose.Schema(...)
試試?幾點建議:
1、先檢查索引的實際TTL情況;您貼出來的部分,感覺上面程式碼和下面的截圖不一致
2、看看server.Status中的ttl的部分
db.serverStatus().metrics.ttl
供參考。
Love MongoDB! Have fun!