首页 文章

如何使用Azure DocumentDB REST API获得超过100个查询结果

提问于
浏览
1

我正在关注下面的Azure DocumentDB示例 . 在示例中,C#代码查询DocumentDB中的文档 .

https://github.com/Azure/azure-documentdb-dotnet/blob/master/samples/rest-from-.net/Program.cs

第182行:

var qry = new SqlQuerySpec { query = "SELECT * FROM root" }; 
var r = client.PostWithNoCharSetAsync(new Uri(baseUri, resourceLink), qry).Result;

问题是结果'r'只包含前100个文档 . 如果我使用Client SDK,我可以获得超过100.我尝试使用流,但到目前为止没有运气 . 任何帮助,将不胜感激!

2 回答

  • 3

    对于SQL查询,如果结果集太大,则会以段的形式返回结果 . 默认情况下,结果以100个项目或1 MB(以第一个命中的限制)的块的形式返回 .

    您可以使用延续令牌来逐个获取每个段 . 或者在请求中设置 x-ms-max-item-count 自定义标头,以将限制增加到适当的值 .

    您可以查看REST API以获取更多详细信息 .

    对于示例程序,您必须添加该行

    client.DefaultRequestHeaders.Add("x-ms-max-item-count", "1000");
    

    为了获得1000个文件而不是100个 .

  • 0

    我只是在这里猜测,但它可能值得一试 . 以下是MSDN中描述List操作的文档:

    https://docs.microsoft.com/en-us/rest/api/documentdb/list-documents

    在“响应”下的“ Headers ”部分中,提到您可能在 Headers “x-ms-continuation”中获得可选标记 . 根据描述,您必须发出另一个GET请求,并指定此令牌以获取结果集的其他元素 .

    你能检查一下你是否在响应中得到这样的 Headers ?如果是这样,您可以使用指定的此令牌发出另一个get请求(请参阅“请求”下的相同文档页面) .

相关问题