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
aggregate
zapytanie. - Przeciągnij wartości „localField” z wyników zapytania do tablicy, prawdopodobnie używając
Array#map
. - Wykonaj
find
zapytanie 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.