首页 文章

CosmosDB中的NULL连续令牌

提问于
浏览
0

我知道如果continuation token为null(整个令牌json为null),则表示 there will be no more data in the next request .

在我的情况下,我检查了下一页中肯定没有更多数据,并且令牌应该为null . 但它返回这个“半”空令牌......

令牌看起来像这样:

“{\”token \“:null,\”range \“:{\”min \“:\”xxxxxxxxxx \“,\”max \“:\”xxxxxxxxxx \“}}”

只有令牌为空,但 minmax 不为空,它表示什么?换句话说,我应该使用 continuation == nullcontinuation.token == null 来查看下一页是否还有更多数据?

1 回答

  • 2

    对于某些背景情况:

    • Cosmos DB是一个分布式数据库,其中数据和请求跨多个后端服务器进行分区(以扩展单个服务器之外的存储和吞吐量) .

    • 我提出这个问题是因为您可以执行路由到单个分区的查询(通过在查询的WHERE / filter子句中包含分区键) - 以及执行跨多个分区扇出的查询 .

    • 在每个分区的范围内 - 以分页方式返回查询结果 .

    • 要了解有关分区的更多信息,请参阅:https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data

    您看到的令牌是SDK中的复合延续令牌,其中包含:

    • 来自Cosmos DB后端的信息,用于恢复查询执行并检索特定分区上的下一页(令牌字段)

    • 有关后端延续令牌来自哪个分区的信息(范围字段) .

    您所看到的是,对于SDK正在查询的特定范围,没有更多结果 .

    至于为什么SDK不仅仅为延续令牌提供json null值:SDK已经到达给定分区的末尾但mstill需要访问其他分区以确定没有更多文档与您的过滤器匹配/需要退回给客户 .

    完成SDK访问所有分区后,它将返回null延续 .

相关问题