MongoDB 自动删除集合中过期的数据——TTL索引

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 简介​ TTL (Time To Live, 有生命周期的) 索引是特殊单字段索引,MongoDB可以用来在一定时间后自动从集合中删除文档的特殊索引。 这对于某些类型的数据非常好,例如机器生成的事件数据,日志和会话信息,这些信息只需要在数据库中保留一段时间。​ 创建 TTL 索引,只需要在使用 db.collection.createIndex() 方法,对字段值为日期或者包含日期的数组设置 expireAfterSeconds 选项即可。1、如果字段是一个数组,并有多个日期值时,MongoDB使用最低(即最早)日期值来计算失效阈值。2、如果字段不是日期类型也不是一个包含日期的数组

简介
​ 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 索引,因为固定集合不支持QQ购买平台删除操作。
不能使用 createIndex() 去修改一个已存在索引的 expireAfterSeconds 。相反,可以使用collMod 命令来修改。否则,改变现有索引的选项的值,你必须删除索引,重新创建。
如果一个非TTL单字段索引字段已经存在,您不能再创建一个同字段的TTL索引,因为不能创建相同键不同选项的多个索引。改变非TTL单字段索引成TTL索引,首先你必须先删除索引再现expireAfterSeconds选项创建索引。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
21天前
|
NoSQL MongoDB 数据库
MongoDB 删除集合
10月更文挑战第14天
25 1
|
25天前
|
存储 NoSQL MongoDB
掌握MongoDB索引优化策略:提升查询效率的关键
在数据库性能调优中,索引是提升查询效率的利器。本文将带你深入了解MongoDB索引的内部工作原理,探讨索引对查询性能的影响,并通过实际案例指导如何针对不同的查询模式建立有效的索引。不仅将涵盖单一字段索引,还会探讨复合索引的使用,以及如何通过分析查询模式和执行计划来优化索引,最终实现查询性能的最大化。
|
1月前
|
存储 NoSQL MongoDB
数据的存储--MongoDB文档存储(二)
数据的存储--MongoDB文档存储(二)
|
4天前
|
存储 NoSQL 关系型数据库
MongoDB索引知识
MongoDB索引知识
9 1
MongoDB索引知识
|
8天前
|
缓存 NoSQL MongoDB
|
10天前
|
存储 NoSQL MongoDB
MongoDB 索引限制
10月更文挑战第22天
21 2
|
10天前
|
NoSQL MongoDB 索引
MongoDB 高级索引
10月更文挑战第22天
20 2
|
14天前
|
NoSQL MongoDB 索引
MongoDB 覆盖索引查询
10月更文挑战第21天
21 1
|
19天前
|
存储 NoSQL MongoDB
MongoDB 索引
MongoDB 索引
29 3
|
22天前
|
存储 NoSQL MongoDB
MongoDB 创建集合
10月更文挑战第13天
27 1