Я не могу найти никакой информации о том, относится ли размер элемента к исходному размеру документа или к размер результата запроса после проецирования.
Я могу заметить, что такие простые запросы, как эти
documents.find({ /*...*/ }, { name: 1 })
потребляют более 1000 RU, для результатов 400 элементов (поля запроса индексируются). Оригиналы документов довольно большие, около 500 кб. Фактически полученные данные крошечные из-за проекции. Если я удалю проекцию, запрос выполняется несколько секунд, но не потребляет значительно больше RU (на самом деле это немного больше, но, похоже, это связано с тем, что он разделен на большее количество GetMore
вызовов).
Мне кажется очень странным, что стоимость запроса в основном зависит от размера исходного документа в коллекции, а не от полученных данных. Это действительно так? Могу ли я уменьшить стоимость этого запроса без разделения данных на несколько коллекций? Логика в основном такова: просто получите «имя» всех этих больших документов в коллекции.
(Нет разбиения на БД ...)
find()
операции, которую выполняете, или то, как вы устанавливаете индексы. Возможно, было бы полезно отредактировать свой вопрос и поделиться более подробной информацией. - person David Makogon   schedule 23.02.2021