Ето обобщение на разликите:
$lookup
- може да се използва само с
aggregate
- може да се използва само за изтегляне на препратени документи от неразделени колекции
- може да извлича референтни документи от всяко поле
- като цяло по-производителен, тъй като е операция от страна на сървъра
- изисква MongoDB 3.2+
Mongoose populate()
- може да се използва с
find
иaggregate
- може да се използва за извличане на реферирани документи както от сегментирани, така и от неразделени колекции
- може да изтегли само реферирани документи от
_id
- без изискване за версия на MongoDB