Я реализовал класс для чтения из БД Cosmos, используя MongoDB.Driver.IMongoClient
.
Мне нужна нумерация страниц, так как в каждой коллекции большое количество предметов, я думал, что добился этого с помощью следующего:
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();
}
В настоящее время мы сталкиваемся с исключениями "Частота запросов велика" для более высоких номеров страниц.
Из того, что я вижу из здесь и здесь Cosmos DB не поддерживает Skip
, поэтому кто-нибудь сможет объяснить, что IMongoClient
делает здесь?
Кроме того, как правильно достичь этого с помощью токена продолжения?