Это разумно в космосе дб. Во-первых, вам нужно знать, что Document DB накладывает ограничения на Response page size
. Эта ссылка суммирует некоторые из этих ограничений: Ограничения хранилища Azure DocumentDb - что что они означают?
Во-вторых, если вы хотите запрашивать большие данные из Document DB, вы должны учитывать проблему производительности запросов, пожалуйста, обратитесь к этой статье: Настройка производительности запросов с помощью Azure Cosmos DB.
Просматривая Document DB REST API, вы можно наблюдать несколько важных параметров, которые оказывают значительное влияние на операции запроса: x-ms-max-item-count, x-ms-continuation.
Итак, ваша ошибка связана с узким местом настройки RU. Запрос count
ограничен количеством RU, выделенных для вашей коллекции. Результат, который вы бы получили, будет иметь токен продолжения.
У вас может быть 2 решения:
1. Конечно, можно было бы поднять настройку RU.
2. За деньги вы можете продолжить поиск следующего набора результатов с помощью токена продолжения и продолжать добавлять его, чтобы получить общее количество (возможно, в SDK).
Вы можете установить значение Максимальное количество элементов и разбить свои данные на страницы с помощью continuation tokens
. Document Db sdk поддерживает беспрепятственное чтение данных с разбивкой на страницы. Вы можете обратиться к фрагменту кода Python, как показано ниже:
q = client.QueryDocuments(collection_link, query, {'maxItemCount':10})
results_1 = q._fetch_function({'maxItemCount':10})
#this is a string representing a JSON object
token = results_1[1]['x-ms-continuation']
results_2 = q._fetch_function({'maxItemCount':10,'continuation':token})
Я импортировал в свою базу данных ровно 30 тысяч документов, после чего попытался выполнить запрос.
select value count(1) from c
в обозревателе запросов. Получается только часть документов на каждой странице. Поэтому мне нужно добавить их все, нажав кнопку Next Page
.
Конечно, вы могли бы сделать этот запрос в коде sdk через токен продолжения.
person
Jay Gong
schedule
16.09.2019