无法在Azure DocumentDB中进行分页工作

时间:2015-05-11 05:43:11

标签: c# azure azure-cosmosdb nosql

由于某些原因,我无法正确地为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

1 个答案:

答案 0 :(得分:1)

这似乎是一个带有DocumentDB的错误;当子数组中的元素数小于请求的页面大小时,继续令牌对selectmany(和连接)行为不正常。

我在MSDN forums上找到了关于此主题的类似帖子。

目前正在进行修复。

与此同时,您可以尝试通过增加页面大小来解决此问题(例如,将其设置为最大值1,000)。