新建索引
db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )
将非TTL单字段索引转换为TTL索引(MongoDB 5.1以上版本可用)
db.runCommand({
"collMod": "tickets", --集合名
"index": {
"keyPattern": { "lastModifiedDate": 1 }, --字段名
"expireAfterSeconds": 100 --过期时间
}
})
修改ttl索引过期时间
db.runCommand({
"collMod": "tickets",
"index": {
"keyPattern": { "lastModifiedDate": 1 },
"expireAfterSeconds": 100
}
})
限制
- TTL索引是单字段索引。复合索引不支持TTL,并且忽略该
expireAfterSeconds
选项。 - 该
_id
字段不支持TTL索引。 - 您无法在上限集合上创建TTL索引,因为MongoDB无法从上限集合中删除文档。
- 您不能用于
createIndex()
更改expireAfterSeconds
现有索引的值。而是将 collMod
database命令与index
collection标志一起使用 。否则,要更改现有索引的选项的值,必须首先删除索引并重新创建。 - 如果某个字段已经存在非TTL单字段索引,则无法在同一字段上创建TTL索引,因为您无法创建具有相同键规范且仅选项不同的索引。要将非TTL单字段索引更改为TTL索引,必须首先删除该索引,然后使用该
expireAfterSeconds
选项重新创建 。