我正在关注下面的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.我尝试使用流,但到目前为止没有运气。任何帮助将不胜感激!
答案 0 :(得分:3)
对于SQL查询,如果结果集太大,则会以段的形式返回结果。默认情况下,结果以100个项目或1 MB(以先达到的限制为准)的块返回。
您可以使用延续令牌来逐个获取每个段。或者,您在请求中设置x-ms-max-item-count
自定义标头,以将限制增加到适当的值。
您可以查看REST API了解更多详情。
对于示例程序,您必须添加行
client.DefaultRequestHeaders.Add("x-ms-max-item-count", "1000");
以获得1000个文件而不是100个。
答案 1 :(得分:0)
我只是在这里猜测,但它可能值得一试。这是MSDN中描述List操作的文档:
https://docs.microsoft.com/en-us/rest/api/documentdb/list-documents
在" Headers" "响应"提到你可能在标题中得到一个可选的标记" x-ms-continuation"。根据描述,您必须发出另一个GET请求,并指定此令牌以获取结果集的其他元素。
你能检查一下你的回复中是否有这样的标题?如果是这样,您可以使用指定的此令牌发出另一个获取请求(请参阅"请求&#34下的相同文档页面。)。