mongodb定時刪除數據(索引刪除)


一 簡介:本文介紹創建自動刪除數據的TTL索引

二 目的 定時刪除數據
三 創建方法
   db.collection.createIndex(keys, options)
   options:
   expireAfterSeconds 指定多少秒或者包含日期值的數組

   創建示例
   db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 },{backgroup: true})

四 何時失效
   1 在指定的時間達到后失效,也即是索引字段的值加上一個特定的秒數之后
   2 如果索引字段是一個數組,即索引字段上存在着多個日期值,此時MongoDB取最小值加上失效時間(lowest())
   3  對於非日期字段或不包含日期數組的索引字段,文檔不會失效
   4  對於不包含索引字段的文檔,文檔不會失效

五 刪除操作
   1 mongod的一個后台線程會讀取索引的值並將失效的文檔從集合移除
   2 當TTL線程被激活后,可以從db.currentOp()或者從profile觀察到刪除操作

六 何時刪除
   1 當基於后台方式創建索引時,TTL線程能夠在索引創建期間開始刪除失效文檔
   2 當基於前台方式創建索引時,TTL線程在索引創建完成后開始刪除失效文檔 
   3 TTL索引的刪除不能完全保證失效期后一定刪除,存在一定延遲(取決於mongod的工作負載)
   4 TTL刪除文檔后台線程每60s移除失效文檔(因此可能存在已過失效期,文檔還在的情形)
   5  在副本集環境中,TTL后台線程僅僅在主副本上工作,輔助副本上由復制操作實現
   6  在使用TTL索引查詢時,與使用非TTL索引一樣

七 一些限制
   1 不能基於已經存在索引的字段創建TTL索引以及非日期字段創建TTL索引,文檔不會失效
   2 TTL索引不支持基於多個字段的復合索引
   3 不支持定長集合
本文系轉載文章來源 https://blog.csdn.net/leshami/article/details/61195427


免責聲明!

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



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