Mongodb - TTL(time to live)特性
TTL集合支持mongodb对存储的数据进行失效时间设置,经过指定的时间段后、或在指定的时间点过期,集合自动被mongod清除。这一特性有利于对一些只需要保存一定时间的数据信息进行存储,比如机器产生的事件数据、日志、会话信息等。
Mongodb使用TTL索引特性来实现TTL集合。TTL通过一个后台线程读取索引中数据类型的值,然后清除过期的集合。
集合中的文档超过expireAfterSeconds关键字定义的时间后,该文档就变得过期了,会被自动删除。在创建TTL索引的时候,需要使用到关键字expireAfterSeconds,索引中对应的field的值的类型必须是date,或者对应的array包含date类型的值。
只能对单列索引创建TTL索引,组合索引不能是TTL索引。
1.经过指定的时间间隔后,集合失效
> db.log_events.createIndex({"createdAt": 1},{expireAfterSeconds: 180}) #5分钟后过期
#插入文档
> db.log_events.insert({
"createdAt": new Date(),
"logEvent": 2,
"logMessage": "Success!"
})
#查看
> db.log_events.find()
{ "_id" : ObjectId("56e219ecf694a8d2cff60cca"), "createdAt" : ISODate("2016-03-11T01:05:48.082Z"), "logEvent" : 2, "logMessage" : "Success!" }
#5分钟后再次查看(已被清除)
> db.log_events.find()
>
2.指定时间点过期
将参数expireAfterSeconds设置为0,expireAt指定过期时间
> db.ttl.createIndex({"expireAt": 1},{expireAfterSeconds:0})
#插入文档
> db.ttl.insert({
"createdAt": new Date('Mar 11, 2016 09:30:00'),
"logEvent": 2,
"logMessage": "Success!"
})
使用TTL时是有限制的:
-如果要索引的字段已经在其他索引中使用,不能创建TTL索引
-索引不能包含多个字段
-如果定义的字段不存在,则永不过期
-不能对capped集合创建TTL索引
Mongodb - TTL(time to live)特性的更多相关文章
- TTL反相器的外部特性
TTL反相器的外部特性 电压传输特性 输入端噪声容限特性 静态输入特性: 静态输出特性: 动态特性: 传输延迟时间:是由晶体管的延迟时间,电阻以及寄生电容元素引起的.包括俩部分:输入由低电平跳为高电平 ...
- MongoDB TTL集合与固定集合
1.固定集合 MongoDB可以创建固定长度的集合,可以设置最大的集合空间或最大的集合数.创建集合的语法如下: db.createCollection("collection ...
- MongoDB TTL索引的使用
目录 一.TTL索引介绍 二.TTL索引运行逻辑 三.TTL索引的限制 四.TTL索引的使用场景 1. 指定具体的过期时间属性 2. 插入一个具体的过期时间 3. TTL属性的修改(collMod) ...
- MongoDb 2.4 beta新特性——全文索引
期待已久的特性,但目前仍然在beta阶段,所以官方建议不要在生产环境使用.也因此需要手动打开这个特性. 在命令行指定 mongod --setParameter textSearchEnabled=t ...
- mongodb 3.0下载安装、配置及mongodb最新特性、基本命令教程详细介绍
mongoDB简介(本文由www.169it.com搜集整理) MongoDB是一个高性能,开源,无模式的文档型数据库,是目前在IT行业非常流行的一种非关系型数据库(NoSql).它在许多场景下可用于 ...
- MongoDb 物理位置应用实现
1代码实现 官方驱动2.7版本 1.1范围查找 /// <summary> /// 半径范围查找位置信息 /// </summary> /// <param name=& ...
- MongoDB优化之二:常见优化方法
四个方面进行 cpu/io 方面的优化处理: 1.集群架构上进行读写分离.所有查询优先考虑在从库上读取,写操作在主库上执行.避免主库混合读写压力过大,也减少主库上读写记录的锁冲突. connectio ...
- MongoDB的正确使用姿势
本文来自网易云社区,转载务必请注明出处. MongoDB是一个非常有前途的数据库,MongoDB官方对自己的定位是通用数据库,其实这个定位跟MySQL有些像.虽其流行度还远未达到MySQL的水平,但笔 ...
- CentOS7 安装MongoDB 3.0服务器
1,下载&安装 MongoDB 3.0 正式版本发布!这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统.MongoDB宣称,3.0新版本不只 ...
随机推荐
- 你一定喜欢看的 Webpack 2.× 入门实战(转载)
最近在学习 Webpack,网上大多数入门教程都是基于 Webpack 1.x 版本的,我学习 Webpack 的时候是看了 zhangwang 的 <<入门 Webpack,看这篇就够了 ...
- c++中const使用详解
const在c++中是一个关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些 ...
- virtualbox4.2.18 ubuntu12.04 The system is running in low-graphics mode
参考1:http://askubuntu.com/questions/225090/the-system-is-running-in-low-graphics-mode-error-in-virtua ...
- iOS:CALayer核心动画层
CALayer:核心动画层 简介: Core Animation 是跨平台的,支持iOS环境和Mac OS X环境 学习核心动画之前,需要先理解CALayer,因为核心动画操作的对象不是UIView, ...
- PHP之is_a()函数执行代码之总结
今天看到云舒在群里贴的漏洞公告,原始的文章在 http://www.byte.nl/blog/2011/09/23/security-bug-in-is_a-function-in-php-5-3-7 ...
- hive中的concat,concat_ws,collect_set用法
select id, str_to_map(concat_ws(',',collect_set(concat(substr(repay_time,0,7), ':',round(interest,2) ...
- Ubuntu中网络配置问题
今天,机器做IP变更配置ubuntu网卡的时候出现了: RTNETLINK answers: File exists 网络network service 无法重启 google一下找到 rm etc ...
- java 获取进程的processId
package us.mine.demo.jvm.util; import java.lang.management.ManagementFactory; import java.lang.manag ...
- 转:CodeReview 如何做?
http://www.cnblogs.com/IT-Bear/archive/2012/07/04/2576367.html
- [ES6] 07. Default Value for function param
Normally, we can set default value for function param: //Here use "Hello" as default param ...