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() 时,它就像一个魅力。仍然不知道问题出在哪里,但重新安装解决了我的问题。
我使用 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() 时,它就像一个魅力。仍然不知道问题出在哪里,但重新安装解决了我的问题。