我实现了一个使用MongoDB.Driver.IMongoClient
从Cosmos DB读取的类。
我需要分页,因为每个集合中都有很多物品,我以为我做到了以下几点:
private async Task<ICollection<SomeClass>> ReadMessages(IMongoCollection<SomeClass> collection, FilterDefinition<SomeClass> filter, int page, int pageSize)
{
var found = new List<SomeClass>();
using (var cursor = await collection
.Find(filter)
.Skip((page - 1) * pageSize)
.Limit(pageSize)
.ToCursorAsync())
{
while (await cursor.MoveNextAsync())
{
var batch = cursor.Current;
found.AddRange(batch.Select(x => x);
}
}
return found.ToArray();
}
对于更高的页码,我们现在遇到“请求率较大”例外。
根据我从here和here所看到的,Cosmos DB不支持Skip
,那么有人能解释IMongoClient
在这里做什么吗?
此外,使用延续令牌实现此目标的正确方法是什么?