由于某些原因,我无法正确地为Azure DocumentDB工作分页
以下是代码段
var finalResults = new List<MyResult>();
// Here I am setting max page size to be 10
var options = new FeedOptions { MaxItemCount = 10 };
var query = client.CreateDocumentQuery<MyResultItem>(collection.SelfLink, options)
.SelectMany(r => r.Results)
.Where(r => r.Result > 75)
.Select(r => r)
.AsDocumentQuery();
// it only works 1 iteration and next iteration I always get HasMoreResults = false
// if I set MaxItemCount = 20, then I get 20 only
while (query.HasMoreResults)
{
var pagedResults = query.ExecuteNextAsync<MyResult>().Result;
foreach (var pagedResult in pagedResults)
{
finalResults.Add(pagedResult);
}
}
无论我为MaxItemCount设置了什么值,它只会获得那么多项而不会获得下一批,所以我得到query.HasMoreResults总是在第二次迭代时返回false。我无法找到问题所在
更新
Json结构如下:
.NET对象名称MyResultItem
{
Id: "xxxxxxxxxxxxxxxxxxxxx",
Name: "xxxxxxxxxxxxxxx",
Results: [
{ Id: 1, Result: 123 },
{ Id: 2, Result: 40 },
{ Id: 3, Result: 75 }
]
}
我正在努力获得一份#34;结果&#34;其中结果&gt; 75
答案 0 :(得分:1)
这似乎是一个带有DocumentDB的错误;当子数组中的元素数小于请求的页面大小时,继续令牌对selectmany(和连接)行为不正常。
我在MSDN forums上找到了关于此主题的类似帖子。
目前正在进行修复。
与此同时,您可以尝试通过增加页面大小来解决此问题(例如,将其设置为最大值1,000)。