MongoDB 自動刪除集合中過期的數據——TTL索引

簡介

? TTL (Time To Live, 有生命周期的) 索引是特殊單字段索引,MongoDB可以用來在一定時間后自動從集合中刪除文檔的特殊索引。 這對于某些類型的數據非常好,例如機器生成的事件數據,日志和會話信息,這些信息只需要在數據庫中保留一段時間。

? 創建 TTL 索引,只需要在使用 db.collection.createIndex() 方法,對字段值為日期或者包含日期的數組設置 expireAfterSeconds 選項即可。

1、如果字段是一個數組,并有多個日期值時,MongoDB使用最低(即最早)日期值來計算失效閾值。

2、如果字段不是日期類型也不是一個包含日期的數組類型那么文檔就永遠不會過期。

3、如果一個文檔不包含索引字段,該文檔也不會到期。

示例

// 創建一個 TTL 索引
db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 600 } )// 修改TTL索引的過期時間
db.runCommand( { collMod: "eventlog",index: { keyPattern: { lastModifiedDate: 1 },expireAfterSeconds: 3600}
})

刪除操作

過期數據的刪除工作是由 mongod 后臺線程來執行,每60秒進行一次。

對于復制集情況, TTL 后臺線程只會刪除主節點上過期的數據,從節點過期文檔刪除則依賴主節點(從節點的 TTL 后臺線程是停止狀態)。

索引區別

對于查詢而言,TTL 索引和其他索引沒有區別。

TTL索引有哪些限制

  • 單字段索引,復合索引時 expireAfterSeconds 會別忽略掉。
  • _id 字段不支持減 TTL 索引。
  • 不能在固定集合上創建 TTL 索引,因為固定集合不支持刪除操作。
  • 不能使用 createIndex() 去修改一個已存在索引的 expireAfterSeconds 。相反,可以使用collMod 命令來修改。否則,改變現有索引的選項的值,你必須刪除索引,重新創建。
  • 如果一個非TTL單字段索引字段已經存在,您不能再創建一個同字段的TTL索引,因為不能創建相同鍵不同選項的多個索引。改變非TTL單字段索引成TTL索引,首先你必須先刪除索引再現expireAfterSeconds選項創建索引。

官網文檔:

https://docs.mongodb.com/manual/core/index-ttl/index.html

作者:學習園
來自個人博客: https://xuexiyuan.cn/article/detail/225.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373495.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373495.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373495.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PLSQL 經常自動斷開失去連接的解決過程

問題背景: 情況是這樣的,很多開發同事的PLSQL上班時間開著8個小時,有時候他們出去抽煙后或者中午吃完飯,回來在PLSQL上面執行就報錯無響應,然后卡住了半天動彈不了,非得重新登錄plsql才生效,我猜…

使用Cobertura,JUnit,HSQLDB,JPA涵蓋您的測試

你好!你好嗎? 今天讓我們談談一個非常有用的工具,名為“ Cobertura”。 該框架與我們在另一篇文章中看到的Emma框架具有相同的功能。 Cobertura和Emma之間的主要區別在于Cobertura顯示帶有圖形的簡歷頁面。 如果要查看有關該主題的其他主題…

fedora mysql gui_fedora8安裝 mysql++失敗!!裝了一個晚上沒搞定!!傷心阿!

fedora8安裝 mysql失敗!!裝了一個晚上沒搞定!!傷心阿!發布時間:2008-02-24 05:15:27來源:紅聯作者:lygzx[rootF8 mysql-3.0.0]# ./configure --w/usr/lib/mysqlconfigure: error: unrecognized option: --w/usr/lib/my…

MongoDB 數組類型查詢 —— $elemMatch 操作符

描述 $elemMatch 數組查詢操作用于查詢數組值中至少有一個能完全匹配所有的查詢條件的文檔。語法格式如下&#xff1a; { <field>: { $elemMatch: { <query1>, <query2>, ... } } }如果只有一個查詢條件就沒必要使用 $elemMatch。 限制 不能指定 $where 查…

MVC4 Action 方法的執行

1. ActionInvoker 的執行&#xff1a; 在MVC 中 包括Model綁定與驗證在內的整個Action的執行是通過一個名為ActionInvoker的組件來完成的。 它同樣具有 同步/異步兩個版本。 分別實現了接口 IActionInvoker /IAsyncActionInvoker。 ASP.NET MVC 中真正用于Action方法同步和異步…

C# 基礎知識總結

要學好C#&#xff0c;基礎知識的重要性不言而喻&#xff0c;現將常用到的一些基礎進行總結&#xff0c;總結如下&#xff1a; 01. 數據類型轉換&#xff1a; 強制類型轉換(Chart--> int): char crA; int i (int)(cr); 02. 委托/匿名函數/Lamda表達式&#xff1a; 委托是匿…

Java注釋和真實世界的Spring示例

“注釋”是編程語言定義的一種&#xff0c;用作“標記”。 可以將它們視為編程語言引擎可以理解的注釋行。 它們不會直接影響程序的執行&#xff0c;但是會在需要時間接影響。 定義 注釋使用interface關鍵字定義&#xff0c;并且與接口相似。 它具有定義類似于接口方法的屬性。…

scrapy+mysql+pipeline+更新數據_python3+Scrapy爬蟲實戰(二)—— 使用pipeline數據保存到文本和數據庫(mysql)...

前言保存本地存儲Json數據配置setting保存數據庫創建數據庫創建表編寫pipelines配置setting本文是對上篇文章所講的代碼進一步優化&#xff0c;回看可以點這里&#xff0c;代碼就直接在上一篇代碼中進行改造&#xff0c;沒有的小伙伴可以在這里下載。前言Scrapy 提供了 pipelin…

NYOJ 44 子串和

子串和 時間限制&#xff1a;5000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;3描述 給定一整型數列{a1,a2...,an}&#xff0c;找出連續非空子串{ax,ax1,...,ay}&#xff0c;使得該子序列的和最大&#xff0c;其中&#xff0c;1<x<y<n。 輸入 第一行是一個…

學習進度條

學習進度條 周次 學習時間 新編寫代碼行數 博客量&#xff08;篇&#xff09; 學到知識點 第一周 160 0 1 github的使用和認識軟件工程這門課的價值。 第二周 160 130 3 復利的計算和Github的一些簡單操作還有就是進行項目的開發分析&#xff0c;還有就是對…

ARM基礎

1.  將32位a的【7&#xff1a;4】改成0101 -> a a&(~(0xF << 4)) | (0x5 << 4)&#xff1b; 2.  32位&#xff1a;單次處理數據32位。 3.  對于CPU而言&#xff0c;一切皆內存&#xff1b; 4.  DMA總線&#xff1a;不經過CPU直接在內存和內存間交換…

使用Jolokia和JMX進行客戶端服務器監視

Java監視工具的選擇非常廣泛&#xff08;由Google提供的隨機選擇和順序&#xff09;&#xff1a; javamelody 壓力探頭 JVisualVM 控制臺 賈蒙 Java JMX Nagios插件不適用 此外&#xff0c;還有各種專用工具&#xff0c;例如ActiveMQ &#xff0c; JBoss &#xff0c; Qu…

圖書管理系統數據字典_2. 結構化——數據字典

返回目錄&#xff1a;Chilan Yuk&#xff1a;軟件工程分析設計圖庫目錄?zhuanlan.zhihu.com一、基本知識用于定義數據流和數據存儲的結構&#xff0c;并給出構成所給的數據流和數據存儲的各數據項的基本數據類型。數據字典中應該包括關于數據的如下信息一般信息&#xff08;名…

HDOJ 5184 Brackets 卡特蘭數擴展

既求從點(0,0)僅僅能向上或者向右而且不穿越yx到達點(a,b)有多少總走法... 有公式: C(ab,min(a,b))-C(ab,min(a,b)-1) /// 折紙法證明卡特蘭數: http://blog.sina.com.cn/s/blog_6917f47301010cno.html Brackets Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65…

010-python基礎-數據類型-字符串操作

1、移除空白 1 username.strip() 2、分割 1 names "alex,jack,rain" 2 names_1 names.split(",") #  字符串分割之后變成列表 3 print(names_1) 4 #輸出 5 [alex, jack, rain] 3、合并列表各元素成為字符串 1 names_1 [alex, jack, rain]2 names_2…

重復次數最多的 子串_每日算法系列【LeetCode 424】替換后的最長重復字符

題目描述給你一個僅由大寫英文字母組成的字符串&#xff0c;你可以將任意位置上的字符替換成另外的字符&#xff0c;總共可最多替換 k 次。在執行上述操作后&#xff0c;找到包含重復字母的最長子串的長度。示例1輸入&#xff1a; s "ABAB", k 2 輸出&#xff1a; …

python基礎(一)簡單入門

一.第一個python程序 1.交互式編程 直接在命令行里面輸入python即可進入python交互式命令行&#xff0c;linux下一樣&#xff1a; 在 python 提示符中輸入以下文本信息&#xff0c;然后按 Enter 鍵查看運行效果&#xff1a; 2.腳本式編程 把代碼都寫到文件里面&#xff0c;然后…

VS2015 python

http://pgqlife.info/2015/05/05/VS-Python/ 配置文檔轉載于:https://www.cnblogs.com/itdef/p/5262712.html

了解Java弱引用

我最近沒來得及關注該博客&#xff0c;最重要的是&#xff0c;我沒有為與技術界的所有人保持聯系而致歉。 我最近偶然發現了Java 1.2以來提供的java.lang.ref包&#xff0c;但具有諷刺意味的是&#xff0c;幾天前我才知道它。 在瀏覽了幾篇有關各種引用類型和java doc的文章時&…

unbuntu 啟動任務腳本_Ubuntu下服務啟動腳本編寫

像Nginx、MySQL等服務一樣&#xff0c;在后臺運行自己編寫的抓取天氣信息的Python腳本。1.以管理員權限新建一個服務腳本文件sudo vim /etc/init.d/weather_service2.用下列模板修改該服務腳本文件#!/bin/bash### BEGIN INIT INFO## Provides: weather_service# Required-Start…