Cosmos Db不返回所有记录,即使maxItemCount设置为-1



我有一个包含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;
}

您没有抽取所有查询结果(缺少对hasmoreeresults的检查):

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;
}

参考(智能感知文档):https://learn.microsoft.com/en-us/dotnet/api/microsoft.azure.cosmos.feediterator-1?view=azure-dotnet#examples