👋 欢迎来到吴老二技术博客,专注运维 / 数据库 / 云原生
首页/数据库/正文

Mongodb的TTL特性

吴
吴老二
2021-11-12数据库2246 次浏览0 条评论
TTL是mongoDB集合中对失效时间的设置,可以针对指定时间为期限,超过就自动删除,也可以针对周期型删除,和定时任务一样。超过指定的时间就自动删除,这样滚动进行,保留的数据就是周期。举例说明一下:一个集合中表中的数据是持续插入的,插入的时候加了时间。时间久后,数据量就会特别大,而且旧的数据也不用了,那就需要定时删除的操作,这个时候就需要用到TTL的特性了。看下面的例子:
> db.wulaoer.createIndex({"createdAt": 1},{expireAfterSeconds: 180}) #3分钟后过期
#插入文档
> db.wulaoer.insert({
    "createdAt": new Date(),
    "logEvent": 2,
    "logMessage": "Success!"
})
#查看
> db.wulaoer.find()
{ "_id" : ObjectId("56e219ecf694a8d2cff60cca"), "createdAt" : ISODate("2021-11-11T01:05:48.082Z"), "logEvent" : 2, "logMessage" : "Success!" }
#3分钟后再次查看(已被清除)
> db.wulaoer.find()
>
在集合wulaoer中创建了一个TTL特性,定时的时间是3秒钟,这里的expireAfterSeconds的单位是秒,可以根据自己的时间自己换算一下。上面的定义的3分钟,删除数据后,3分钟自动清理。
> db.wulaoer.createIndex({"expireAt": 1},{expireAfterSeconds:0})
#插入文档
> db.wulaoer.insert({
    "createdAt": new Date('Nov 11, 2021 11:30:00'),
    "logEvent": 2,
    "logMessage": "Success!"
})
第二种是针对结束时间,也就是说11:30之前的删除,之后的一直保留。这样的操作有一个问题,就是后期需要继续修改,如果不修改数据还是持续增加的。两种方式如何使用,还是要看自己的环境,根据不通的需求实现吧。
文章底部广告位在后台「广告设置」填写广告代码后显示

评论 0

评论需 登录 后发表(注册并验证邮箱)。
还没有评论,来抢沙发~