国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MongoDB > 正文

MongoDB TTL索引的實例詳解

2020-03-14 12:51:31
字體:
來源:轉載
供稿:網友

MongoDB TTL索引的實例詳解

TTL索引是一種特殊類型的單字段索引,主要用于當滿足某個特定時間之后自動刪除相應的文檔。也就是說集合中的文檔有一定的有效期,超過有效期的文檔就會失效,會被移除。也即是數據會過期。過期的數據無需保留,這種情形適用于如機器生成的事件數據,日志和會話信息等等。本文主要描述TTL索引的使用。

一、TTL索引

創建方法    db.collection.createIndex(keys, options)    options:        expireAfterSeconds 指定多少秒或者包含日期值的數組創建示例    db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } ) 何時失效    在指定的時間達到后失效,也即是索引字段的值加上一個特定的秒數之后    如果索引字段是一個數組,即索引字段上存在著多個日期值,此時MongoDB取最小值加上失效時間(lowest())    對于非日期字段或不包含日期數組的索引字段,文檔不會失效    對于不包含索引字段的文檔,文檔不會失效刪除操作    mongod的一個后臺線程會讀取索引的值并將失效的文檔從集合移除    當TTL線程被激活后,可以從db.currentOp()或者從profile觀察到刪除操作何時刪除    當基于后臺方式創建索引時,TTL線程能夠在索引創建期間開始刪除失效文檔    當基于前臺方式創建索引時,TTL線程在索引創建完成后開始刪除失效文檔       TTL索引的刪除不能完全保證失效期后一定刪除,存在一定延遲(取決于mongod的工作負載)    TTL刪除文檔后臺線程每60s移除失效文檔(因此可能存在已過失效期,文檔還在的情形)    在副本集環境中,TTL后臺線程僅僅在主副本上工作,輔助副本上由復制操作實現    在使用TTL索引查詢時,與使用非TTL索引一樣一些限制    不能基于已經存在索引的字段創建TTL索引以及非日期字段創建TTL索引,文檔不會失效    TTL索引不支持基于多個字段的復合索引    不支持定長集合

二、TTL索引示例

# mongo --shell localhost:27000 TTLData.js MongoDB shell version: 3.2.11connecting to: localhost:27000/testrepSetTest:PRIMARY> addTTLTestData() //添加集合數據Create three records in database each with a create time that is 1 minute apartCreated three test documents, oldest being 4 mins oldNow create a TTL index with expiry of 5 mins on the createDate field as followsdb.ttlTest.ensureIndex({createDate:1}, {expireAfterSeconds:300})repSetTest:PRIMARY> db.ttlTest.find()  //當前向集合里插入了3個文檔{ "_id" : 1, "createDate" : ISODate("2017-03-10T03:23:01.169Z") }{ "_id" : 2, "createDate" : ISODate("2017-03-10T03:24:01.169Z") }{ "_id" : 3, "createDate" : ISODate("2017-03-10T03:25:01.169Z") }//下面為測試集合上的文檔添加索引,即5分鐘后索引失效repSetTest:PRIMARY> db.ttlTest.createIndex({createDate:1}, {expireAfterSeconds:300}){    "createdCollectionAutomatically" : false,    "numIndexesBefore" : 1, // Author : Leshami    "numIndexesAfter" : 2,  // Blog  : http://blog.csdn.net/leshami    "ok" : 1}//查找文檔repSetTest:PRIMARY> db.ttlTest.find(){ "_id" : 1, "createDate" : ISODate("2017-03-10T03:23:01.169Z") }{ "_id" : 2, "createDate" : ISODate("2017-03-10T03:24:01.169Z") }{ "_id" : 3, "createDate" : ISODate("2017-03-10T03:25:01.169Z") }//當指定時間到期后,文檔被刪除,如下,查詢不到任何文檔repSetTest:PRIMARY> db.ttlTest.find()

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 静安区| 财经| 金沙县| 神池县| 万宁市| 焉耆| 来宾市| 龙川县| 蒙城县| 南川市| 四平市| 修水县| 荔波县| 平塘县| 枣庄市| 华安县| 东乌珠穆沁旗| 嫩江县| 怀集县| 资溪县| 融水| 天门市| 阜城县| 清新县| 曲水县| 萝北县| 吉林省| 西林县| 东乡族自治县| 华安县| 邯郸县| 牙克石市| 金山区| 思南县| 海安县| 新密市| 子长县| 黄骅市| 潜江市| 桑植县| 岚皋县|