MongoDB 存活時間 TTL 用法


使用方法: db.Colloctions.ensureIndex({'date':1},{expireAfterSeconds:60})//date 為設置的索引,expireAfterSeconds為數據刪除事件

MongoDB 透過 mongod 背景處理過期的資料 https://docs.mongodb.com/manual/release-notes/2.2/ ,頻率為一分鐘一次。在建立索引時(ensureIndex)加入 expireAfterSeconds 選項與秒數就可以完成 TTL 設定。

設定
假設有一 Collection 名稱為 "forgetpwd",存活時間為 1800 秒,建立 TTL 索引時可以用以下設定:
db.Test. ensureIndex({'date': 1}, { expireAfterSeconds: 1800})
建立資料:
db.Test.save({'user': 'toomore', ' date': New Date()})

 

  • 先生成索引,date為索引,expireAfterSeconds為存活時間

 

 

 

 

 

  • 然后插入數據 才能有效,插入的索引 date 必須為 Bson的時間類型,不然 TTL就會失效

 

 

 

 

  • 查找對應插入數據

  • 過了一分鍾 ,再次查找數據 數據消失

 

使用限制:

    • 索引欄位必須為 BSON 的時間格式,如果不是時間格式,TTL 就無效。

    • _id 欄位不能設定為 TTL 的時間索引欄位。(這有點可惜,ObjectID 本身既有時間紀錄在裡面,還需要再指定一個時間欄位有點多餘…)

    • 如果時間欄位是陣列(array)包含多個時間值,則以最近的時間為基準設定。

    • 不可以在 Capped Collections 設定 TTL,因為 Capped Collections 格式的資料本身就無法刪除。

    • 在某些情況下,過期的資料還會存在,直到下一個 mongod 定期的刪除循環止。

    • expireAfterSeconds時間設置60以下沒有意義,因為TTL的清除數據頻率為一分鐘一次,低於一分鍾的,它要等到輪詢時間,才會清除


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM