MongoDB TTL 不工作

MongoDB TTL does not works

我使用 mongod 版本开发 debian 10(buster)。 4.2.17。我想使用 TTL 删除集合中的旧文档。我确实四处走动,我确信查询中没有错字。

我在 this link 上遵循了虚拟示例官方 mongo,其中在时间戳和 expireAfterSeconds 上创建索引。

db.log_events.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 30 } )

我还用这个添加了关于集合的文档

db.log_events.insert( {
   "createdAt": new Date(),
   "logEvent": 2,
   "logMessage": "Success!"
} )

但还是不行。我确实读到日志没有立即在 this 上,但在等待几个小时后它仍然没有被删除。同样在 mongo 日志中,没有出现 TTL 日志。我用 db.log_events.getIndexes() 检查索引,它们确实出现了。

有什么解决办法的建议吗?

我试图找出 mongo 有什么问题,然后我尝试用这个 reference

激活 TTL 线程
db.adminCommand({setParameter: 1, ttlMonitorEnabled: true});

然后我尝试使用这个 suggestion 命令来检查线程是否 运行 与 db.serverStatus().metrics.ttl 和 return as

{ "deletedDocuments": NumberLong(0), "passes": NumberLong(0) }

也使用 db.adminCommand ({getParameter: 1, ttlMonitorEnabled: true}) 和 return was: true

机器上的 re-install mongo 解决了,当再次检查 serverStatus() 时,它就像一个魅力。仍然不知道问题出在哪里,但重新安装解决了我的问题。