Благодарение на нишка в github споделено от Grégory NEUT в коментарите на въпроса успях да установя някои факти:
- Методът populate() на Mongoose не използва $lookup на MongoDB зад кулисите. Той просто прави друга заявка към базата данни.
- Mongoose няма функции, които MongoDB няма.
populate()просто прави две или повече заявки.
Според мен има места за използване на populate() и други да използват $lookup . За по-сложни заявки $lookup в тръбопровод за агрегиране ще работи най-добре.