Oto podsumowanie różnic:
$lookup
- może być używany tylko z
aggregate
- może być używany tylko do pobierania dokumentów, do których istnieją odniesienia z kolekcje niepodzielone
- może pobierać dokumenty referencyjne według dowolnego pola
- ogólnie bardziej wydajna, ponieważ jest to operacja po stronie serwera
- wymaga MongoDB 3.2+
Mongusta populate()
- może być używany z
find
iaggregate
- może być używany do pobierania dokumentów odniesienia z kolekcji podzielonych i nieshardowanych
- może pobierać dokumenty, do których się odwołuje, tylko przez
_id
- brak wymagań dotyczących wersji MongoDB