Voici un résumé des différences :
$lookup
- ne peut être utilisé qu'avec
aggregate
- ne peut être utilisé que pour extraire des documents référencés à partir de collections non partitionnées
- peut extraire des documents référencés par n'importe quel champ
- généralement plus performant car il s'agit d'une opération côté serveur
- nécessite MongoDB 3.2+
Mangouste populate()
- peut être utilisé avec
find
etaggregate
- peut être utilisé pour extraire des documents référencés à partir de collections partitionnées et non partitionnées
- peut uniquement extraire les documents référencés par
_id
- aucune exigence de version de MongoDB