Graças a um tópico do github compartilhado por Grégory NEUT nos comentários da pergunta pude estabelecer alguns fatos:
- O método populate() do Mongoose não usa $lookup do MongoDB nos bastidores. Ele simplesmente faz outra consulta ao banco de dados.
- O Mongoose não possui funcionalidades que o MongoDB não possui.
populate()
apenas faz duas ou mais consultas.
Na minha opinião, existem lugares para usar
populate()
e outros para usar $lookup
. Para consultas mais complexas $lookup
em um pipeline de agregação funcionaria melhor.