2017-03-17 56 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