使用Cosmos Db Mongo API的文档TTL

时间:2018-05-23 17:45:49

标签: azure-cosmosdb

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

  • 我正在使用Cosmos Db和MongoDB API。
  • 在我的收藏的每个文档中设置“ttl”字段。
  • 在Azure中,我的收藏时间设置为“开启(无默认)”。
  • 我在没有模拟器的情况下这样做,因为模拟器默认使用SQL API。在模拟器中,我看到“_ts”设置,我在Azure中看不到这个字段。
  • 我可以通过将生存时间设置为“开启”来切换到收集级别到期,并且文档将按预期过期。当我这样做时,我的“ttl”字段被忽略,并且遵循我在Azure中为“second(s)”设置的值。我仍然在文档中看到我的“ttl”字段。

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

  

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

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

  

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

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

1 个答案:

答案 0 :(得分:1)

我使用MongoDb API在Cosmos Db中获得了文档级别的生存时间。我必须向Microsoft支持寻求帮助才能使其正常运行。微软大数据团队的回应如下。

  

在启用文档级TTL功能之前,我想   在此处澄清有关文档TTL功能详细信息的以下内容。

     

TTL功能由两个级别的TTL属性控制-   收集级别和文档级别。

     

现在不是MongoDB帐户的每个文档级别的TTL   默认情况下可用。但是,我们可以针对特定情况启用此功能   客户,并且此功能是在帐户级别设置的。

     

TTL在文档级别,但是该功能已在帐户中启用   级别,表示该帐户下的所有收款(如果有)   带有TTL设置的文档,它将生效。对于其他收藏,   如果未为每个文档设置TTL值,则不会   受影响。

     

您需要在_ts字段上具有索引才能使其正常工作。

     

总结一下:-此功能适用于Cosmos DB帐户级别。   我们需要在Cosmos DB后端中启用文档TTL功能   一侧。