Mongoose 4.5 admite esto
Project.find(query)
.populate({
path: 'pages',
populate: {
path: 'components',
model: 'Component'
}
})
.exec(function(err, docs) {});
Y puedes unirte a más de un nivel profundo.
Editar 17/03/2021:esta es la implementación de la biblioteca, lo que hace detrás de escena es hacer otra consulta para buscar algo para usted y luego unirse a la memoria. Aunque este trabajo, pero en realidad no deberíamos confiar en él. Hará que su diseño de base de datos se vea como tablas SQL. Esta es una operación costosa y no escala bien. Intente diseñar su documento para que reduzca la unión.