Ответ 1
Проецирование несколько похоже на использование имен столбцов в явном виде в SQL, поэтому кажется немного противоречащим интуиции спросить, будет ли возврат меньшего количества данных накладными расходами на возврат большего объема данных (полный документ).
Итак, вам нужно найти документ (в зависимости от того, как вы .find() может быть быстрым или медленным), но возвращая только первые два поля документа, а не все поля (полный документ), сделает его быстрее не медленным.
Наличие второй коллекции может принести выгоду только в том случае, если вы обеспокоены тем, что ваша коллекция включена в оперативную память. Если документы в дубликатном наборе намного меньше, то они могут предположительно вписываться в меньшую сумму общей ОЗУ, уменьшая вероятность того, что страница должна быть заменена с диска. Однако, если вы пишете эту коллекцию, а также оригинальную коллекцию, тогда вам нужно иметь намного больше данных в ОЗУ, чем если бы у вас была только оригинальная коллекция.
Таким образом, хотя сложные детали могут зависеть от вашей индивидуальной настройки, общий ответ, вероятно, будет равен 2. Вам будет полезно больше использовать проекцию и вернуть только два поля, которые вам нужны.