利用Mongo TTL索引实现数据自动过期

TTL索引(time-to-live index)允许为每一个文档设置一个超时时间,文档超过这个时间就会被删除。

在ensureIndex中指定expireAfterSecs选项就可以创建一个TTL索引:

1
>db.foo.ensureIndex({“lastUpdated”:1},{“expireAfterSecs”:60*60*24})

上述命令就为集合foo的lastUpdated字段上创建了一个TTL索引,如果文档的lastUpdated字段为日期类型,当服务器的时间比文档的lastUpdated字段中的时间晚24小时,文档就会被删除。

当TTL建立后可以使用collMod命令修改TTL索引的超时时间:

1
db.runCommand({collMod:"tableName",index:{keyPattern:{keyCol:1},expireAfterSeconds:3600 }});

PS:注意问题

mongo TTL的回收频率默认是1分钟,少于一分钟的过时需要一分钟才能生效.