1、需求

最近在接入其他部门的数据,但是因为数据量太大,所以导致mongo中的数据暴涨,所以需要定期删除数据。

2、方案

  • 方案1: 在机器上创建cron 定时任务,删除数据,

缺点:放在机器上不好管理

  • 方案2: 在程序中起一个定时器删除数据

缺点:需要自己调job,然后还需要拉取所有的数据进行读取计算

  • 方案3:使用mongodb 自带的TTL过期功能,毫无疑问,选择这个

3、Mongo TTL功能

1、功能实现

  1. 需要在文档中增加一个date 字段
  2. 创建一个单列索引,并且设置过期时间

2、举个例子

创建索引

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

插入数据

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

3、原理解析

mongo也没有什么魔法,下面一起看下

1.可以看到mongo在date字段上创建了索引,这样在操作删除的时候只要读取索引数据就可以判断了

2.索引的过期时间是秒,也就是说在创建的索引上增加过期时间,如果超过当前时间就会删除,这个符合逻辑,也是这么做的,合理

3.mongo 在后台启动了一个线程,在后台线程中读取索引中的值并从集合中删除过期的数据

4.后台线程每60s运行一次,所以数据不会立即删除

4、注意点

  1. _id字段不支持TTL索引
  2. 某个字段已经存在非TTL单字段索引,则无法在同一字段上创建TTL索引
  3. 如果文档中的索引字段不是date或包含日期值的数组,文档将不会过期。
  4. 如果文档不包含索引字段,则文档将不会过期

总结

在开始的时候还是走了一些弯路,主要是不知道要在date字段上建立索引,并且不知道60s 的运行间隔,导致研究了老半天,就是看不到数据删除。

不过不重要,也算是学习了

我屮艸芔茻,mongo居然可以自动删除数据相关推荐

  1. win10开始菜单打不开了,我屮艸芔茻

    妈蛋的, 安装了电脑管家的"经典开始菜单"之后, 感觉不好用,卸载了. 然后开始菜单打不开了, wifi连接按钮打不开了. 音量按钮打不开了. 我屮艸芔茻, 网上有千奇百怪的答案, ...

  2. 我屮艸芔茻!!!什么情况,就刚才,百年之功废于一旦!!博客园,你TM想吃翔了吧!...

    就在刚才,写的东西没保存的了,网站挂了... 博客园网站挂了,我写的完蛋了...我靠!!! @博客园技术团队   你给个说法吧 博客园   ...这是我碰到的第二次了--擦 转载于:https://w ...

  3. mysql数据库,当数据类型是float时,查询居然查询不出数据来

    mysql数据库,当数据类型是float时,查询居然查询不出数据来,类似如下: 以后mysql数据库不用float类型,而double类型可以查得出来. 转载于:https://www.cnblogs ...

  4. 秀米svg点击显示另一张图_这个svg也太好玩了吧,居然可以自动展开全文!

    原标题:这个svg也太好玩了吧,居然可以自动展开全文! 胖友们大家好呀,我是三儿 三儿发现,胖友们都比较喜欢自动变换和展开样式的svg.自动变换能够省掉点击步骤,展开svg可以将 隐藏的内容展开,两个 ...

  5. mongo如何删除数据后相应的删除空间和内存占用

    mongo如何删除数据后相应的删除空间和内存占用 Q: mongo数据变大之后,删除不需要的表和数据之后,内存和磁盘空间都没有释放. A: 这是mongo机制,只有删除数据库时才会回收相应的空间,否则 ...

  6. mongo忘记密码并删除用户

    2019独角兽企业重金招聘Python工程师标准>>> vim /etc/mongodb.conf          # 修改 mongodb 配置,将 auth = true 注释 ...

  7. 阿里言:出乎意料,“字节跳动”居然是这么做数据迁移的

    目标 附面试思维导图: 能够描述项目数据迁移的方案 了解hbase的特点 能够熟悉数据迁移中的数据包装和转换 能够完成文章数据的全量和增量迁移 能够完成热点文章数据的迁移 1 为什么需要自动同步 因为 ...

  8. OpenAI居然能自动写论文?导师直言我都犯难了...

    最近两个月以来,刷屏网络技术圈的莫过于chatGPT 莫属了!闲暇之余,自己也去注册了一个账号来看看它的魔力,毕竟也有很多博主抵挡不住其中的诱惑,好吧,我也抵挡不住,也就去开了openAI实验了一番, ...

  9. 元旦快乐!今天我居然登上了数据派头条!

    从今天起,我们告别了2017,迎来崭新的2018年.回首这一年,数据派的成长离不开志愿者和粉丝们一直以来的支持和陪伴,点点认识了很多新朋友也重逢了很多老朋友,每次我们的讲座活动,摄影师也都会记录下演讲 ...

最新文章

  1. apache虚拟机的开启iis apache共存 apache 的设置(报错 找不到 Not found)
  2. linux 内核参数 杨,Linux 内核参数
  3. 统计学习方法第四章朴素贝叶斯法-李航
  4. 计算机网络实验3:网络设备基本配置
  5. 洛谷 P3243 【[HNOI2015]菜肴制作】
  6. Debian8.3.0下安装Odoo8.0步骤
  7. 腾讯2013实习生笔试题+答案1-5aadaa 6-10adbcc 11-15 acacc16-20 bbddc
  8. 关于类模版迭代器提出时的错误
  9. java中return finally_Java中return和finally到底哪个先执行
  10. C#之获取系统cpu
  11. mysql创建触发器怎么保存_如何创建使用mysql触发器?
  12. python获取指定扩展名的文件_用Python提取文件夹下的特定扩展名的文件
  13. C++ 一维高斯积分的实现
  14. 前端 配色网站 自用 免费 颜色很全
  15. SDI科普--- SD-SDI/HD-SDI/3G-SDI/12G-SDI
  16. PC比电脑好玩的秘密是什么?答案就是因为有这些神奇的网站!
  17. 民法学习入门的“听说读写”之道
  18. 大类资产配置(一)均值方差模型MOV
  19. oracle故障一例,Oracle 10g异机恢复后EM无法启动故障处理一例
  20. Android 无需 root 卸载系统应用

热门文章

  1. V-REP笔记:重力加速度的修改
  2. X-Window结构分析与应用
  3. 【git生成私钥】git@gitlab.dfc.com: Permission denied (publickey).问题解决
  4. PS如何修改图片上的文字
  5. Javaweb城市公交查询系统的设计与实现
  6. Windows 下安装MIMIC-IV
  7. sdut 2055来淄博旅游
  8. vs2017配置linux连接器失败,Xilinx HLx 2017.1与VS 2017兼容问题解决的方法盘点
  9. 对 BFC 规范(块级格式化上下文:block formatting context)的理解?
  10. HANA DB重置SYSTEM密码