【发布时间】:2021-06-19 03:04:24
【问题描述】:
我们正在使用 AWS DocumentDB v3.6.0。
我们想使用 MongoDB TTL 索引功能在一段时间后删除项目。项目经常更新,直到发生特殊事件。因此,我们需要经常更新ttl 字段。
db.test.insertOne({_id: "12345",ttl: new Date()})
db.test.createIndex({ttl:-1},{expireAfterSeconds: 3600})
db.stats() 产生以下预期结果:
[
{
"avgObjSize": 51,
"capped": false,
"count": 1,
"indexSizes": {
"_id_": 16384,
"ttl_-1": 16384
},
"nindexes": 2,
"ns": "db.test",
"ok": 1,
"size": 51,
"storageSize": 16384,
"totalIndexSize": 32768
}
]
但是,如果我们更新项目的 ttl 时间戳,ttl_-1 索引会继续增长。
for (let i = 1; i < 1000; i++) {
db.test.updateOne({ _id: "12345" }, { $set: { ttl: new Date() } });
}
db.stats() 现在产生:
[
{
"avgObjSize": 51,
"capped": false,
"count": 1,
"indexSizes": {
"_id_": 16384,
"ttl_-1": 90112
},
"nindexes": 2,
"ns": "db.test",
"ok": 1,
"size": 51,
"storageSize": 65536,
"totalIndexSize": 106496
}
]
如您所见,ttl_-1 索引大于_id_ 索引,尽管我们仍然只有一项。为什么?
【问题讨论】:
标签: mongodb indexing ttl aws-documentdb