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” .