Cosmos DB查询不会返回所有结果

时间:2018-10-31 18:59:21

标签: azure-cosmosdb azure-cosmosdb-sqlapi

方案1:

以下之一:

  • Cosmos DB查询不会在一个查询中返回所有预期结果
  • Cosmos DB查询针对同一查询返回不同的结果计数

在以下情况下可以看到此行为:

  1. 在门户网站上,使用TOP执行查询,例如SELECT TOP 10,但返回的结果少于预期的10个元素。

  2. 在门户网站上,执行相同的查询,但是每次都有不同的结果集。结果集不同,但是某些结果被其他结果覆盖。例如。考虑使用[C,O,S,M,O,S]的预期结果进行查询。在第一个执行中,结果为:[C,O,S]。在第二次执行中,结果为[C,O,S,M,O]。第二个结果覆盖第一个结果。

  3. 使用查询REST API,查询返回的结果少于在门户网站上运行相同查询的结果。

方案2:

  • Cosmos DB查询针对同一查询返回不同结果(不是结果计数)

1 个答案:

答案 0 :(得分:-1)

场景1

该行为是由于无法在一页内完成查询。可能有几个原因:

  • 该集合的预配置RU不足以容纳去往该集合的当前流量,并且当前查询受到影响。
  • 查询范围很广。

在这些情况下,查询将结果集分成多个页面。因此,为了获得所有结果,我们需要遍历所有页面直到最后。

如何遍历页面取决于运行查询的方式。

  • 在Portal中,当查询的结果超过一页时,您应该会看到“加载更多”链接。单击此链接将移至下一个结果页面。
  • 使用SDK,SDK支持在后台进行分页。可以在in the sample code中找到.NET SDK的示例。其他SDK的工作方式与此类似。
  • 使用REST API,您需要在当前查询响应标头中获取延续令牌值,然后在下一个查询的请求标头中设置它。标头名称为 x-ms-continuation 。可以在the Querying resources article中找到更多详细信息。

场景2

此行为是由于有写入流量进入该帐户。因此,每个查询的查询结果都不同。