您的位置:首页 > 数据库 > Mongodb

Mongodb Expire Documents after a Specified Number of Seconds

2016-02-14 14:32 567 查看


[title2]通过设置TTL使集合中的数据过期[/title2]

2.2 新版功能.

本文对MongoDB的 “存活时间” 或者叫作”TTL“的集合特性进行了介绍。TTL集合能让存储在MongoDB中的数据在指定的秒数后或在指定的时钟时间被

mongod 自动删除。

数据过期对某些类型的信息很有用,包括机器生成的事件数据、日志以及只需要存在一段有限时间内的会话信息。

一个特别的索引类型支撑了TTL集合的实现。TTL依赖一个在
mongod 中的后台线程,该线程读取索引中日期类型的值并从集合中删除过期的

documents。

[title2]步骤[/title2]

在(文档)创建之后一定的秒数删除文档。这样的TTL索引还会支持对于文档创建时间的查询。或者,

注解
The TTL index is a single field index. Compound indexes do notsupport the TTL property. For more information on TTL indexes, seeTTL索引.

Expire Documents after a Specified Number of Seconds

为了使文档在一定的秒数后过期,在容纳BSON日期类型或BSON日期类型对象数组的值的字段上创建TTL索引 并 在
expireAfterSeconds 指定一个正的非零值。当被索引字段
[1] 指定的时间经过了 expireAfterSeconds 字段中的秒数时,文档将会过期。

例如,如下操作在 log_events 集合的
createdAt 字段创建了一个索引并指定
expireAfterSeconds 的值为
3600 以使过期时间为
createdAt 指定的时间之后的一小时。

db.log_events.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )


当向 log_events 集合添加文档时,设置
createdAt 字段为当前时间:

db.log_events.insert( {
"createdAt": new Date(),
"logEvent": 2,
"logMessage": "Success!"
} )


当某文档的 createdAt 字段的值

[1] 晚于 expireAfterSeconds``中指定的秒数时,MongoDB会自动从
``log_events 集合删除该文档。

[1](1,

2)
如果该字段包含一组BSON日期类型的对象,如果至少有一个BSON日期类型的对象晚于
``expireAfterSeconds``中指定的秒数,数据过期。
参见
$currentDate
操作符

Expire Documents at a Specific Clock Time

为了使文档在一个确定的时钟时间过期,首先在一个容纳BSON日期类型或BSON日期类型对象数组的值的字段上创建TTL索引 并 把
expireAfterSeconds 指定为
0。对于集合中的每个文档,设置其被索引的日期字段为与文档过期的时间一致的值。如果被索引字段包含了一个过去了的日期,MongoDB认为该文档过期。

例如,如下操作在 log_events 集合的
createdAt 字段创建了一个索引并指定
expireAfterSeconds 的值
0。

db.log_events.createIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )


对于每个文档,设置 expireAt 的值与文档过期的时间一致。举例来说,如下的

insert() 操作添加了一个将在
2013年7月22号
14:00:00 过期的文档。

db.log_events.insert( {
"expireAt": new Date('July 22, 2013 14:00:00'),
"logEvent": 2,
"logMessage": "Success!"
} )


当某文档的 expireAt 字段的值晚于
expireAfterSeconds``中指定的秒数时——在本例中也就是
``0 ,MongoDB会自动从 log_events 集合删除该文档。因此,数据在指定的
expireAt 值过期。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: