2017-03-17 39 views
0

我正在使用Azure DocumentDB。我正在查看ExecuteNextAsync操作。我所看到的是ExecuteNextAsync不返回resluts。我正在使用我在线发现的示例,并且不会生成任何结果。如果我在返回初始查询结果时调用枚举操作。是否有示例显示使用ExecuteNextAsync的完整配置?ExecuteNextAsync不能正常工作

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

围绕收集定义,我发现,当我设置收集大小为250GB,发生这种情况。我测试了10GB的集合,并且确实有效。最新的测试表明,该操作现在再次挂起。

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

回答

0

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

几乎总是以ExecuteNextAsync单个呼叫会返回结果,但你可能会得到0的结果通常是由于两个原因:

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

如果你想查询确定性返回结果,你必须使用延续令牌/ ExecuteNextAsync用于寻呼机制使用SELECT TOP对比。您还可以通过将FeedOptions.MaxDegreeOfParallelism更改为-1来跨多个分区并行读取查询结果。

+0

从我所了解的HasMoreResults与确定查询具有更多基于分页策略的可用结果相关。 HasMoreResults是用于分页的结果。而不是确保你得到结果。我不相信我可以在我的场景中使用这个属性。我确实使页面处于活动状态,但是基于在后续调用中使用RequestContinuation标记。 该查询是对集合的简单选择。 – Peter

+0

另外 - 我正在执行相同的查询计数(返回没有记录)和计数回来大于零 - 所以聚合似乎工作。 – Peter