sql >> Database >  >> NoSQL >> MongoDB

Vreselijk verslechterde prestaties met andere deelnamevoorwaarden in $lookup (met pijplijn)

De tweede versie voegt een aggregatiepijplijnuitvoering toe voor elk document in de samengevoegde verzameling .

De documentatie zegt:

De pijplijn wordt uitgevoerd voor elk document in de verzameling, niet voor elk overeenkomend document.

Afhankelijk van hoe groot de verzameling is (zowel # documenten als documentgrootte) kan dit behoorlijk lang duren.

Logisch - voor alle aanvullende documenten vanwege het verwijderen van de limiet moet ook de aggregatiepijplijn voor hen worden uitgevoerd.

Het is mogelijk dat de uitvoering per document van de aggregatiepijplijn niet zo geoptimaliseerd is als zou kunnen. Als de pijplijn bijvoorbeeld voor elk document wordt opgezet en afgebroken, kan er gemakkelijk meer overhead zijn in dat dan in de $match-voorwaarden.

Het uitvoeren van een aggregatiepijplijn per samengevoegd document biedt extra flexibiliteit. Als u deze flexibiliteit nodig hebt, kan het zinvol zijn om de pijplijn uit te voeren, hoewel er hoe dan ook rekening moet worden gehouden met de prestaties. Als je dat niet doet, is het verstandig om een ​​meer performante aanpak te gebruiken.




  1. Spark voert geen taken uit

  2. Zijn documentgeoriënteerde databases bedoeld om relationele databases te vervangen?

  3. Kan Yii2-objectgegevens niet retourneren als Json

  4. Spring Data mongo - probleem met Distinct-collectie