sql >> Database >  >> NoSQL >> MongoDB

Het uitvoeren van Mongodb-query's kost te veel tijd

Er zijn veel dingen die u moet doen om uw zoekopdracht te optimaliseren. Wat ik zou proberen:

  • Zoals Anthony Winzlet in opmerkingen zei, gebruik als mogelijke $match-fase als eerste fase. Op deze manier kunt u het aantal documenten dat wordt doorgegeven aan de volgende fasen verminderen en indexen gebruiken.

  • Ervan uitgaande dat u ten minste 3.6 mongo-versie gebruikt, wijzigt u uw opzoekfasen met behulp van de 'let/pipeline'-syntaxis (zie hier ). Op deze manier kunt u uw 'externe filters' ( "customer_info.status":{$ne:9}, "model_info.status":{$ne:9} ) integreren in een $match-fase in uw lookups-pijplijn. Met indexen op de juiste velden / verzamelingen, wint u wat tijd / geheugen in uw $lookup-stadia.

  • Voer uw afwikkelingsfasen zo laat mogelijk uit, om het aantal documenten dat wordt doorgegeven aan de volgende fasen te beperken.

Het is belangrijk om te begrijpen hoe de aggregatiepijplijn werkt:elke fase ontvangt gegevens, doet zijn werk en geeft gegevens door aan de volgende fase. Dus hoe minder gegevens er aan de pijplijn worden doorgegeven, hoe sneller uw zoekopdracht zal zijn.




  1. MongoDB $substrBytes

  2. De strijd om de NoSQL-databases - MongoDB en Cassandra vergelijken

  3. mongodb:activeer textSearch

  4. MongoDB converteert stringtype naar floattype