首页 文章

使用Cosmos Db Mongo API的文档TTL

提问于
浏览
1

在Cosmos Db中,我使用的是文档级生存时间(TTL),而Cosmos似乎没有过期文档 . 使用MongoDB API,此功能在Cosmos Db中是否有效?如果是的话,我错过了什么?

  • 我正在使用Cosmos Db和MongoDB API .

  • 在我的集合的每个文档中设置了"ttl"字段 .

  • 在Azure中,我的收藏集的生存时间设置为"On (no default)" .

  • 我在没有模拟器的情况下这样做,因为模拟器默认使用SQL API . 在模拟器中,我看到"_ts"设置,我在Azure中看不到此字段 .

  • 我可以通过将生存时间设置为"On"并按预期过期文档来切换到收集级别到期 . 当我这样做时,我的"ttl"字段被忽略,并且遵循我在Azure中为"second(s)"设置的值 . 我仍然在文档中看到我的"ttl"字段 .

虽然我的文档中没有看到“_ts”字段,但有关索引的文章提到它是一个保留属性 . 这可以认为它是在幕后设置的,并且不会在查询中返回 .

https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb-indexing“_ts是一个特定于Cosmos DB的字段,无法从MongoDB客户端访问 . 它是一个保留(系统)属性,包含文档上次修改的时间戳 . “

Update: 我检查了MongoDB支持页面(https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb-feature-support),它表明集合级别TTL可用,并且没有说明文档级别 .

Azure Cosmos DB支持基于文档时间戳的相对生存时间(TTL) . 可以通过Azure门户为MongoDB API集合启用TTL .

Update: 我的Azure门户预览功能现在显示:
Cosmos DB Preview Features

1 回答

  • 1

    我使用MongoDb API获得了使用Cosmos Db工作的文档级生存时间 . 我不得不向微软支持部门寻求帮助以使其正常运行 . 微软大数据团队的回应如下 .

    在启用文档级TTL功能之前,我想在此处阐明关于文档TTL功能的详细信息 . TTL功能由两个级别的TTL属性控制 - 集合级别和文档级别 . 现在每个文档级别默认情况下,MongoDB帐户的TTL不可用 . 但是,我们可以为特定客户启用此功能,并且此功能在帐户级别设置 . TTL处于文档级别,但该功能在帐户级别启用,这意味着对于帐户下的所有集合,如果存在具有TTL设置的文档,则该功能将生效 . 对于其他集合,如果没有为每个文档设置TTL值,则不会受到影响 . 您需要在_ts字段上有一个索引才能生效 . 总结一下: - 此功能适用于Cosmos DB帐户级别 . 我们需要在我们这边的Cosmos DB后端启用Document TTL功能 .

相关问题