Я запрашиваю коллекцию Azure DocumentDB с помощью FeedOption MaxItemCount для установки размера страницы и IDocumentQuery<T>::ExecuteNextAsync<T>()
. Когда это вызывается с небольшими значениями, скажем, < 100, против набора из 10 000 документов я последовательно возвращаю количество объектов, которые я задал в качестве предела.Запрос Azure DocumentDB с ExecuteNextAsync возвращает меньше MaxItemCount
Однако, когда я выполняю с большими значениями MaxItemCount, скажем 500, я возвращаю все результаты, но не более MaxItemCount.
Теперь я ценю, что MaxItemCount является «максимальным количеством элементов», но из моего понимания из литературы было, что ограничивающим фактором было количество объектов в коллекции. Что-то еще явно ограничивает мои результаты, и мы можем видеть то же поведение в инструментах «Проводник документов» и «Проводник запросов» на Azure Portal.
Коллекция установлена на «S3», которая должна поддерживать 2500RU, а Query Explorer показывает «стоимость» менее 100RU.
Кто-нибудь знает, что здесь происходит? Что ограничивает мой результирующий набор?
Можете ли вы предоставить минимальный пример, который дублирует проблему? –
Есть три вещи, которые ограничивают результаты: (1) максимальный размер ответа 1 МБ. Если это будет достигнуто, в пакет не будет добавлено больше результатов (2) пропускной способности коллекции. Если вы достигли заданного лимита (с некоторым буфером) на основе S1/S2/S3, вы можете получить меньше, чем партию, и (3), если вы не –
@LarryMaccherone. Это очень важно для службы. Создайте коллекцию. Поместите в него все, что вам нравится - много документов с большим количеством свойств. Спросите страницу 1000, получите меньше. Ограничьте свой запрос на меньшее, чем все поля, получите больше строк. В конце концов вы можете ограничить свой запрос до того момента, когда вы получите все 1000 строк. –