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

Frygtelig forringet ydeevne med andre joinbetingelser i $lookup (ved hjælp af pipeline)

Den anden version tilføjer en aggregeringspipeline-udførelse for hvert dokument i den samlede samling .

Dokumentationen siger:

Pipelinen udføres for hvert dokument i samlingen, ikke for hvert matchede dokument.

Afhængigt af hvor stor samlingen er (både antal dokumenter og dokumentstørrelse) kan dette komme ud til en anstændig tid.

Giver mening - alle de yderligere dokumenter på grund af fjernelse af grænsen skal også have aggregeringspipelinen eksekveret for dem.

Det er muligt, at udførelse af aggregeringspipeline pr. dokument ikke er så optimeret, som den kunne være. For eksempel, hvis rørledningen er sat op og revet ned for hvert dokument, kan der nemt være mere overhead i det end i $match-betingelserne.

Udførelse af en aggregeringspipeline pr. samlet dokument giver yderligere fleksibilitet. Hvis du har brug for denne fleksibilitet, kan det give mening at udføre pipelinen, selvom ydeevnen skal overvejes uanset. Hvis du ikke gør det, er det fornuftigt at bruge en mere effektiv tilgang.




  1. MongoDB 'count()' er meget langsom. Hvordan forfiner/arbejder vi med det?

  2. Hvordan aktiveres SSL/TLS i Mongoid 3-klienten?

  3. Sender MongoDB-data til .ejs med node.js

  4. Sådan angives læsepræference i Meteors mongo-forespørgsler