Разбиение на страницы в базе данных «Космос» приводит к исключениям «Уровень запросов велик» - PullRequest
0 голосов
/ 29 августа 2018

Я реализовал класс для чтения из БД 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 делает здесь?

Кроме того, как правильно достичь этого с помощью токена продолжения?

...