Jak wskazują cytowane przez Ciebie dokumenty, nie możesz użyć $lookup w kolekcji podzielonej na fragmenty. Dlatego najlepszym sposobem obejścia tego problemu jest samodzielne wykonanie wyszukiwania w osobnym zapytaniu.
- Wykonaj
aggregatezapytanie. - Przeciągnij wartości „localField” z wyników zapytania do tablicy, prawdopodobnie używając
Array#map. - Wykonaj
findzapytanie względem kolekcji „z”, używając zapytania takiego jak{foreignField: {$in: localFieldArray}} - Połącz swoje wyniki w dowolnym formacie.
Nie pozwól, aby $lookup ograniczenia powstrzymują Cię przed shardingiem kolekcji, które wymagają tego do skalowalności, po prostu wykonaj funkcję wyszukiwania samodzielnie.