91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB TTL索引的實例詳解

發布時間:2020-09-15 13:14:48 來源:腳本之家 閱讀:219 作者:Leshami 欄目:MongoDB數據庫

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.11
connecting to: localhost:27000/test

repSetTest:PRIMARY> addTTLTestData() //添加集合數據
Create three records in database each with a create time that is 1 minute apart
Created three test documents, oldest being 4 mins old
Now create a TTL index with expiry of 5 mins on the createDate field as follows
db.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()

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衢州市| 翼城县| 宜兰市| 乐陵市| 筠连县| 新兴县| 建德市| 汽车| 团风县| 樟树市| 三都| 莱阳市| 仁布县| 怀安县| 仁寿县| 库车县| 依兰县| 乌兰察布市| 郯城县| 资中县| 龙川县| 都江堰市| 广南县| 沙湾县| 乌拉特后旗| 仙游县| 平潭县| 凤台县| 崇明县| 黑山县| 台南县| 年辖:市辖区| 家居| 五峰| 广宁县| 邵武市| 营山县| 准格尔旗| 峨山| 余江县| 陆川县|