MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

mongodb - $lookup potok używający COLLSCAN zamiast indeksu

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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jakie są koszty ogólne Java ORM dla MongoDB

  2. Błąd podczas łączenia się z MongoDb Atlas Server

  3. Bson ładny wydruk przy użyciu sterownika Java MongoDb

  4. Wyjątek limitu czasu kursora Mongo

  5. Brak uprawnień do zapytania o admin.system.namespaces na mongodb