【发布时间】:2015-05-11 05:43:11
【问题描述】:
由于某种原因,我无法让 Azure DocumentDB 的分页正常工作
这是一个代码sn-p
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 }
]
}
我正在尝试获取 Result > 75 的“结果”的平面列表
【问题讨论】:
-
为了澄清 - 您期望有多少结果?我假设您期望的文件超过 20 个?介意发布一些示例数据吗?
-
@aliuy 嗨,我期待大约 975 个结果。我认为 SelectMany 存在限制。看起来您只能“分页”顶级文档,而不是对象的子对象(即 r.Results 是 MyResults 中的子数组)。虽然,我可能错了
标签: c# azure azure-cosmosdb nosql