mongo设置自动过期删除索引 mongo数据类型与java对应关系 1 2 3 4 Date now = new Date(); BasicDBObject time = new BasicDBObject("ts", now); coll.save(time); //插入的记录 { "_id" : ObjectId("503993b20364129f6625d349"), "ts" : ISODate("2012-08-26T03:10:42.146Z") }
1 2 3 4 5 6 7 8 9 10 11 Java boolean ------------ Mongodb Boolean Java char ------------ Mongodb String Java String ------------ Mongodb String Java byte ------------ Mongodb 32-bit integer Java short ------------ Mongodb 32-bit integer Java int ------------ Mongodb 32-bit integer Java long ------------ Mongodb 64-bit integer Java float ------------ Mongodb Double Java double ------------ Mongodb Double Java util.Date ------------ Mongodb Date Java Array ------------ Mongodb Array
ttl索引介绍 TTL索引是MongoDB中一种特殊的索引, 可以支持文档在一定时间之后自动过期删除。目前,TTL索引只能在单字段上建立,并且字段类型必须是date类型或者包含有date类型的数组 (如果数组中包含多个date类型字段,则取最早时间为过期时间)
TTL索引生效机制 当你在集合中某一个字段建立TTL索引后,后台会有一个单线程,通过不断查询(默认60s一次)索引的值来判断document是否有过期,并且删除文档的动作还依据mongod实例的负载情况,如果负载很高,可能会稍微延后一段时间再删除。
创建索引方式1 1 2 3 4 5 6 7 8 9 // 创建索引方式1 db.log_events.createIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } ); db.log_events.insert( { "expireAt": new Date('2023-11-01T02:47:00Z'), "logEvent": 2, "logMessage": "Success!" } ); db.log_events.find(); db.log_events.getIndexes();
创建索引方式2 1 2 3 4 5 6 7 8 9 // 创建索引方式2 db.log_event.createIndex( { "expireAt": 1 }, { expireAfterSeconds: 60 } ); db.log_event.insert({ "expireAt": new Date(), "logEvent": 2, "logMessage": "Success!" }); db.log_event.find(); db.log_event.getIndexes();
方式1可以指定在特定的时间进行删除,方式2是在数据产生多长时间后进行删除。
参考链接:
TTL Indexes — MongoDB Manual
Expire Data from Collections by Setting TTL — MongoDB Manual
Java数据类型和MongoDB数据类型对应关系_java mysql monodb 类型对应-CSDN博客
MongoDB支持的java数据类型和测试例子-java教程-PHP中文网
MongoDB—使用TTL索引自动删除过期数据_mongodb自动删除过期数据_爱思考的实践者的博客-CSDN博客
Mongodb设置TTL索引自动清理过期数据_mongottlday-CSDN博客