mogodb 数据量大的情况下,需要定期删除数据,方案有3种
1. 写个程序,每晚去跑,删除30天前的数据
2. 服务器写个corn定时任务,定期删除
3. mongodb自带TTL过期删除功能
讲讲第3种情况.
001. 创建索引(单位s),作用在字段 createDate,值必须为当前时间 new Date(),表示 失效时间为当前时间加 60s 后过期。
db.testcollection.createIndex( { "createDate": 1 }, { expireAfterSeconds: 60 },{backgroup: true})
002. 插入数据
db.testcollection.insertOne( {
"createDate": new Date(),
"age": 18,
"addr": "xxxxxx",
"name":"李四"
} )
003. 观察到 数据在 大于等于60s,且小于等于120s 已经删除了
判断索引到期时间,超过当前时间,就会删除这条数据。
mongodb 后台线程 60s 运行一次,所以数据不会到期立刻删除