Skan kolekcji w wynikach wyjaśniania odnosi się do map_levels
kolekcja, jak zaznaczono w queryPlanner.namespace
wartość. $lookup
stage scala dane z innej kolekcji do bieżącego potoku. Ponieważ nie określiłeś żadnych etapów zapytania przed $lookup
, map_levels
kolekcja będzie iterowana za pomocą skanowania kolekcji. Jeśli cała kolekcja jest ładowana bez żadnych kryteriów filtrowania lub sortowania, skanowanie kolekcji wiąże się z mniejszym obciążeniem niż iteracja indeksu i pobieranie dokumentów.
Możesz uniknąć bieżącego skanowania kolekcji, dodając $match
etap przed $lookup
(zakładając, że nie chcesz przetwarzać pełnych map_levels
kolekcji).
Niestety dane wyjściowe wyjaśniania zapytań nie wskazują (jak w MongoDB 4.0) użycia indeksu dla $lookup
gradacja. Obejściem tego byłoby uruchomienie wyjaśnienia za pomocą pipeline
wyszukiwania jako zapytanie agregujące najwyższego poziomu.
Istnieje istotny problem do obejrzenia/zagłosowania w narzędziu do śledzenia problemów MongoDB:SERVER-22622:Popraw wyszukiwanie $ wyjaśnij, aby wskazać plan zapytania w kolekcji „z” .