2016-07-25 49 views
1

是否可以使用DocumentDB .NET SDK来针对返回所有匹配文档的数据库运行异步查询?是否有可能为所有文档异步查询DocumentDB(即不分页)?

答案回答这个问题的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返回所有可用的结果(无分页)?

+0

我从来没有使用它,因为我管理自己的页面带有水上接口,但我认为指定者()方法做了所要求的。 –

+0

你可以尝试使用'CreateStoredProcedureQueryy'。 像'client.CreateStoredProcedureQuery(collectionLink,“Select * from myColleciton”);'。 – vikscool

回答

2

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

你可以用扩展方法包装这个代码,使它变得方便。

这是一个很好的建议,为DocumentDB队以添加该支持 - https://github.com/Azure/azure-documentdb-dotnet/issues

相关问题