一、 Time To Live(TTL) 集合
MongoDB 2.2 引入一个新特性--TTL 集合,TTL集合支持失效时间设置,当超过指定时间后, 集合自动清除超时文档,者用来保存一个诸如session会话信息的时候非常有用。
如果想使用TTL集合,用用到 expireAfterSeconds 选项
db.ttl.ensureIndex({ "date": new Date() }, { expireAfterSeconds: 3000 })
限制
+ 你不能创建TTL索引,如果要索引的字段已经在其他索引中使用。
+ 索引不能包含多个字段。
+ 索引的字段必须是一个日期的 bson 类型。
如果违反了上述三个规则,那么超时后文档不会被自动清除。
MongoDB 后台进程会实时跟踪过去的文档并删除.
首先我们创建一个索引设置10秒钟后失效:
```
db.ttl_collection.ensureIndex( { "Date": 1 }, { expireAfterSeconds: 10 } )
```
```
db.ttl_collection.insert({
"Date" : new Date()})
```
因为我们想象该文档会在10秒后删除,但是实际情况并不是如此的。 因为 mongod 后台任务每分钟检查一次过期文档,因此在事件的处理上总是由一定差异, 但这个差异不会超过1分钟,这也取决于 MongoDB 实例当前的负荷情况。
你还可以为已存在的集合设置TTL索引。
能否组织文档白删除?
+ 文档被删除之前更新TTL字段。
+ 为 TTL 字段设置一个非日期类型的值。
还没有评论,来说两句吧...