Azure Cosmos DB MongoDB API是否支持expireAfterSeconds=-1实现无限TTL?
Azure Cosmos DB MongoDB API 单文档TTL的集合级索引配置方案
核心结论
在Azure Cosmos DB的MongoDB API中,无法用-1作为集合级TTL索引的expireAfterSeconds值,要实现主文档默认不自动过期的需求,需将该值设为MongoDB支持的最大正整数2147483647(约68年)。
详细说明
- Azure Cosmos DB的MongoDB API遵循原生MongoDB的TTL索引规则,
expireAfterSeconds仅接受非负整数:- 设为
0时,文档会在ttl字段指定的时间点立即过期; - 设为正整数时,会在
ttl字段时间基础上追加对应秒数后过期; -1是Cosmos DB NoSQL API独有的“无限过期”配置,并不适用于MongoDB API,官方文档未提及该值也印证了这一点。
- 设为
- 当集合级
expireAfterSeconds设为2147483647时:- 无
ttl字段的实体主文档,因TTL索引需依赖ttl字段触发过期逻辑,会一直保留不会被自动删除; - 带有
ttl字段的附属关联文档,其单文档的ttl值会覆盖集合级配置,按预设策略到期自动删除。
- 无
索引创建示例
db.your_collection.createIndex( { "ttl": 1 }, { expireAfterSeconds: 2147483647 } )
内容的提问来源于stack exchange,提问作者Martin Smith
相关产品推荐
相关产品推荐

