我在mongoDB中创建了一个集合,我为其创建了字段“expireAt”的索引,这是一个日期时间,并将expireAfterSeconds属性设置为0。 因为我想在文档级别设置TTL而不是在集合级别。 正如我在redis中所知,我可以获得特定键的剩余TTL 只是有问题是mongoDB可能吗?我可以在哪里获得给定文件的剩余时间到期。
我在谷歌搜索过但未找到任何相关信息。
谢谢
答案 0 :(得分:1)
如果您为每个文档过期将TTL expireAfterSeconds
值设置为0,则剩余时间将是文档中当前时间与TTL日期字段(例如expireAt
)之间的差异。没有特定的服务器功能来查询,但您可以在应用程序中计算或使用MongoDB的聚合框架。
使用mongo
shell返回在下一个TTL传递中有资格删除文档之前剩余时间(以毫秒为单位)的示例:
db.mycoll.aggregate(
{ $project: {
expireAt: 1,
ttlMillis: {
$subtract: [ "$expireAt", new Date() ]
}
}}
)
注意:TTL后台线程每60秒运行一次,因此文档可能会在其名义到期后持续一分钟或更长时间。
答案 1 :(得分:-2)