He aquí un resumen de las diferencias:
$lookup
- solo se puede usar con
aggregate
- solo se puede usar para extraer documentos de referencia de colecciones no fragmentadas
- puede extraer documentos referenciados por cualquier campo
- generalmente más eficiente ya que es una operación del lado del servidor
- requiere MongoDB 3.2+
Mangosta populate()
- se puede usar con
find
yaggregate
- se puede utilizar para extraer documentos de referencia de colecciones fragmentadas y no fragmentadas
- solo puede extraer documentos referenciados por
_id
- sin requisito de versión de MongoDB