Ecco un riepilogo delle differenze:
$lookup
- può essere utilizzato solo con
aggregate
- può essere utilizzato solo per estrarre documenti di riferimento da raccolte non ripartite
- può inserire documenti referenziati da qualsiasi campo
- generalmente più performante in quanto è un'operazione lato server
- richiede MongoDB 3.2+
Mongoose populate()
- può essere utilizzato con
find
eaggregate
- può essere utilizzato per estrarre documenti di riferimento da raccolte partizionate e non ripartite
- può solo estrarre documenti referenziati da
_id
- nessun requisito di versione MongoDB