azure-cosmosdb - 即使 maxItemCount 设置为 -1,Cosmos Db 也不会返回所有记录
问题描述
我有一个包含 50 000 条记录的 cosmos 数据库,但下面的代码只返回 8356。我认为将 MaxItemCount 设置为 -1 会返回所有记录。我怎样才能做到这一点?
public async Task<IEnumerable<T>> ReadAsync(Expression<Func<T, bool>> predicate)
{
var entityList = new List<T>();
var query = _container.GetItemLinqQueryable<T>(requestOptions: new QueryRequestOptions { MaxItemCount = -1 })
.Where(predicate).OrderByDescending(x => x.TimeStamp).AsQueryable();
using (var iterator = query.ToFeedIterator())
{
entityList.AddRange(
await iterator.ReadNextAsync());
}
return entityList;
}
解决方案
您没有耗尽所有查询结果(缺少对 HasMoreResults 的检查):
public async Task<IEnumerable<T>> ReadAsync(Expression<Func<T, bool>> predicate)
{
var entityList = new List<T>();
var query = _container.GetItemLinqQueryable<T>(requestOptions: new QueryRequestOptions { MaxItemCount = -1 })
.Where(predicate).OrderByDescending(x => x.TimeStamp).AsQueryable();
using (var iterator = query.ToFeedIterator())
{
while (iterator.HasMoreResults)
{
entityList.AddRange(
await iterator.ReadNextAsync());
}
}
return entityList;
}
参考(Intellisense 文档):https ://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.cosmos.feediterator-1?view=azure-dotnet#examples
推荐阅读
- javascript - Animate.css 承诺有时不会在动画结束后清理类
- node.js - 使用 Mongoose 在 MongoDB 上避免重复
- flutter - 无状态小部件列固定白色
- ios - Swift:如何覆盖 Firebase 数据库上的值?
- r - 替换数据框中的单元格
- mongodb - 无法连接到 MongoDB - 身份验证失败
- django - Django 中的媒体文件
- sql-server - 从 VBA excel 中的两个 SQL 数据库中检索数据
- visual-studio-code - VSCode Remote SSH 无法识别私钥文件
- python - JSON 构建对象使用时区删除时间戳中的尾随 0