广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB自动删除过期数据的方法(TTL索引)
  • 962
分享到

MongoDB自动删除过期数据的方法(TTL索引)

2024-04-02 19:04:59 962人浏览 八月长安
摘要

前序: 最近由于公司业务需求,对于3个月前的过期数据需要进行删除动作,以释放空间和方便维护 本来想的是使用crontab写个脚本定时执行,但是看到MonGo本身就有自动删除过期数据的功能,所以还是用一下

前序:

最近由于公司业务需求,对于3个月前的过期数据需要进行删除动作,以释放空间和方便维护

本来想的是使用crontab写个脚本定时执行,但是看到MonGo本身就有自动删除过期数据的功能,所以还是用一下吧

这个方法就是使用TTL索引,后续我再写一个脚本定时删除的任务,关于TTL索引的更多使用实例,大家可以参考学习这篇文章:https://www.jb51.net/article/126810.htm

介绍:

TTL索引是mongoDB中一种特殊的索引, 可以支持文档在一定时间之后自动过期删除,目前TTL索引只能在单字段上建立,并且字段类型必须是date类型或者包含有date类型的数组(如果数组中包含多个date类型字段,则取最早时间为过期时间)

官网介绍链接:Https://docs.mongodb.com/v3.2/core/index-ttl/

机制:

当你在集合中某一个字段建立TTL索引后,后台会有一个单线程,通过不断查询(默认60s一次)索引的值来判断document是否有过期,并且删除文档的动作还依据mongod实例的负载情况,如果负载很高,可能会稍微延后一段时间再删除。

还有一个需要注意的地方,在复制集成员中,TTL后台线程只删除primary的过期数据,如果此实例变为secondary角色,则后台线程闲置

创建TTL索引方法:

和普通索引的创建方法一样,只是会多加一个属性而已

例:在log_events的集合中,createTime 字段上建立一小时后过期的TTL索引


 >db.log_events.createIndex( { "createTime": 1 }, ---字段名称 
    { expireAfterSeconds: 60*60 } ) ---过期时间(单位秒)
>db.log_events.getIndexes() ---查看索引
[
 {
  "v" : 1,
  "key" : {
   "_id" : 1
  },
  "name" : "_id_",
  "ns" : "tt.t1"
 },
 {
  "v" : 1,
  "key" : {
   "createTime" : 1
  },
  "name" : "createTime_1",
  "ns" : "tt.t1",
  "expireAfterSeconds" : 3600
 }
]
您可能感兴趣的文档:

--结束END--

本文标题: MongoDB自动删除过期数据的方法(TTL索引)

本文链接: https://www.lsjlt.com/news/51441.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作