是否可以异步查询DocumentDB以获取所有文档(即无分页)?

时间:2016-07-25 14:37:18

标签: azure azure-cosmosdb

是否可以使用DocumentDB .NET SDK对返回所有匹配文档的数据库运行异步查询?

StackOverflow问题的答案答案:Querying Azure DocumentDB with ExecuteNextAsync returns fewer than MaxItemCount表示:

  

查询在DocumentDB上执行的时间有限   ...
  如果达到这些限制,则可能会返回部分结果。

我知道可以通过迭代分页结果来克服上述限制:(source

List<Family> families = new List<Family>();

FeedOptions options = new FeedOptions { MaxItemCount = 1 };

var query = client.CreateDocumentQuery<Family>(collectionLink, options).AsDocumentQuery();

while (query.HasMoreResults)
{
    foreach (Family family in await query.ExecuteNextAsync())
    {
        families.Add(family);
    }
}

我的问题是 - 这个循环是否必要?可能有一种更优雅的方式告诉SDK返回所有可用的结果(没有分页)?

1 个答案:

答案 0 :(得分:2)

您拥有的循环是跨多个请求执行枚举的最佳方式,因为DocumentDB中的每个请求都有一个有限的时间执行。

您可以将此代码包装在扩展方法中,以方便使用。

对于DocumentDB团队来说,这是一个很好的建议,可以添加这种支持 - https://github.com/Azure/azure-documentdb-dotnet/issues