ExecuteNextAsync不工作

时间:2017-03-17 20:52:41

标签: azure-cosmosdb nosql

我正在使用Azure DocumentDB。我正在查看ExecuteNextAsync操作。我所看到的是ExecuteNextAsync不返回任何重新排列。我正在使用我在线找到的示例,并且不会产生任何结果。如果我在初始查询上调用枚举操作,则返回结果。是否有示例显示使用ExecuteNextAsync的完整配置?

更新 为了更明确,我实际上没有得到任何结果。该调用似乎只是运行并且没有生成错误。

使用集合定义,我发现当我将集合大小设置为250GB时,就会发生这种情况。我测试了10GB的集合,它确实工作了一段时间。最新测试显示该操作现在再次悬挂。

我生成了两个集合。第一个集合似乎正常工作。第二个似乎在此操作失败。

1 个答案:

答案 0 :(得分:1)

ExecuteNextAsync的单独调用可能会返回0结果,但是当您通过调用查询来完成查询直到HasMoreResults为假时,您将始终获得完整的结果。

几乎总是,对ExecuteNextAsync的单次调用将返回结果,但由于两个原因,您可能会得到0结果:

  • 如果查询是扫描,则DocumentDB将根据可用吞吐量进行部分进度。此处不返回任何结果,但会返回基于最新进度的新延续令牌以继续执行。
  • 如果是跨分区查询,则每个调用都针对单个分区执行。在这种情况下,如果该分区没有与查询匹配的文档,则调用将不返回任何结果。

如果您希望查询确定性地返回结果,则必须使用SELECT TOP与使用延续令牌/ ExecuteNextAsync作为分页机制。您还可以通过将FeedOptions.MaxDegreeOfParallelism更改为-1。

,在多个分区上并行读取查询结果