网站地图    收藏   

主页 > 后端 > MongoDB >

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

来源:自学PHP网    时间:2019-08-01 18:22 作者:小飞侠 阅读:

[导读] MongoDB自动删除过期数据的方法(TTL索引)...

前序:
https://www.jb51.net/article/126810.htm
介绍:
机制:
创建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
 }
]修改TTL索引的expireAfterSeconds属性值:
注:如果想更改过期时间expireAfterSeconds,可以使用collMod方法,要不然你只能只用dropIndex(),createIndex()方法重建索引了,我想这样的方法在亿级数据量下是很头疼的
db.runCommand( { collMod: "log_events", ---集合名
  index: { keyPattern: { createTime: 1 }, ---createTime为具有TTL索引的字段名
    expireAfterSeconds: 7200  ---修改后的过期时间(秒)
   }})方法如下:
注:上面的createTime字段就不需要再有TTL索引了,这个expireTime的时间就需要在插入时指定上
>db.log_events.createIndex( { "expireTime": 1 }, ---字段名称
    { expireAfterSeconds: 0 } ) ---过期时间(单位秒)
>db.log_events.insert( {
 "expireTime": new Date('Jan 22, 2016 23:00:00'), ---此文档将在2016-1-22的23点自动删除
 "logEvent": 2,
 "logMessage": "Success!"} )限制条件:
验证:
总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对自学php网的支持。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论