sql >> Database teknologi >  >> NoSQL >> MongoDB

mongodb - $lookup pipeline ved hjælp af COLLSCAN i stedet for indeks

Samlingsscanningen i dit forklaringsoutput refererer til map_levels samling, som angivet i queryPlanner.namespace værdi. $lookup fase fletter data fra en anden samling til den aktuelle pipeline. Da du ikke har angivet nogen forespørgselsstadier før $lookup , map_levels samling vil blive itereret ved hjælp af en samlingsscanning. Hvis en hel samling indlæses uden nogen filtrerings- eller sorteringskriterier, har en samlingsscanning mindre overhead end at iterere et indeks og hente dokumenterne.

Du kan undgå den aktuelle samlingsscanning ved at tilføje en $match trin før din $lookup (forudsat at du ikke ønsker at behandle de fulde map_levels samling).

Desværre indikerer forespørgselsforklaringsoutput (som ved MongoDB 4.0) ikke indeksbrug for $lookup niveauer. En løsning på dette ville være at køre forklaring ved hjælp af dit opslags pipeline som en aggregeringsforespørgsel på øverste niveau.

Der er et relevant problem at se/stemme op i MongoDB Issue tracker:SERVER-22622:Forbedre $lookup forklar for at angive forespørgselsplan på "fra"-samlingen .




  1. Hvordan finder man lighed i dokumentfeltet MongoDB?

  2. Håndtering af migreringer med MongoDb

  3. Hvad er den hurtigste måde at kopiere en samling i den samme database?

  4. Integrationer og tjenester tilgængelige fra MongoDB til skyen