Можно ли не индексировать все поля в запросе?
Да, но вы хотите избежать этого для часто используемых запросов. Все, что не проиндексировано, будет означать «сканирование таблицы». Это означает доступ к каждому возможному документу индивидуально, что будет медленным.
Где вы рисуете линию?
Также обратите внимание, что если вы сортируете по неиндексированному полю, MongoDB будет «кричать на вас», если вы пытаетесь отсортировать слишком много данных. Таким образом, вы должны иметь представление о том, сколько данных находится «за пределами» индекса.
Если ваш находится где-то посередине, как вы определяете правильный подход, когда дело доходит до индексов?
Мониторинг, приборостроение, эксперименты и опыт.
Здесь нет жесткого и быстрого правила, все будет зависеть от компромиссов. ЦП и ОЗУ, дисковый ввод-вывод, отзывчивость и т. Д.