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

Azure 是否可以异步查询DocumentDB中的所有文档(即无分页)?,azure,azure-cosmosdb,Azure,Azure Cosmosdb,是否可以使用使对返回所有匹配文档的DB运行异步查询 此StackOverflow问题的答案:表示: 查询在DocumentDB上执行的时间有限制。 … 如果达到这些限制,则可能会返回部分结果集 我知道,通过对分页结果进行如下迭代,可以克服上述限制:() 列表族=新列表(); FeedOptions=new FeedOptions{MaxItemCount=1}; var query=client.CreateDocumentQuery(collectionLink,options).AsDocu

是否可以使用使对返回所有匹配文档的DB运行异步查询

此StackOverflow问题的答案:表示:

查询在DocumentDB上执行的时间有限制。

如果达到这些限制,则可能会返回部分结果集

我知道,通过对分页结果进行如下迭代,可以克服上述限制:()

列表族=新列表();
FeedOptions=new FeedOptions{MaxItemCount=1};
var query=client.CreateDocumentQuery(collectionLink,options).AsDocumentQuery();
while(query.HasMoreResults)
{
foreach(wait query.ExecuteNextAsync()中的族)
{
家庭。添加(家庭);
}
}

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

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

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

这是DocumentDB团队添加此支持的一个好建议-

我从未使用过它,因为我用一个懒惰的界面来管理我自己的分页,但我认为toArray()方法满足了我的要求。你能用
CreateStoredProcedureyy
试试吗。像
client.CreateStoredProcedureQuery(collectionLink,“从MyCollectionon中选择*)
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);
    }
}