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

Udførelse af Mongodb-forespørgsler tager for meget tid

Der er mange ting at gøre for at optimere din forespørgsel. Hvad jeg ville prøve :

  • Som Anthony Winzlet sagde i kommentarerne, så brug som muligt $match stage som første fase. På denne måde kan du reducere antallet af dokumenter, der sendes til de følgende stadier, og bruge indekser.

  • Forudsat at du bruger mindst 3.6 mongo-versionen, skal du ændre dine opslagstrin ved hjælp af 'let/pipeline'-syntaksen (se her ). På denne måde kan du integrere dine 'eksterne filtre' ( "customer_info.status":{$ne:9}, "model_info.status":{$ne:9} ) i en $match-fase i din opslagspipeline. Med indekser på højre felter/samlinger vil du få lidt tid/hukommelse i dine $opslagsfaser.

  • Lav dine afslapningsfaser så sent som muligt for at begrænse antallet af dokumenter, der sendes til de følgende stadier.

Det er vigtigt at forstå, hvordan aggregeringspipeline fungerer:hver fase modtager data, gør sine ting og sender data til næste fase. Så jo færre data der sendes til pipelinen, jo hurtigere vil din forespørgsel være.




  1. spring-boot redis :Hvordan ugyldiggøres alle sessioner for en bruger?

  2. NodeJS Knox Formidable resultater i en 400, fil ikke uploadet til S3 Bucket

  3. Sådan søger du i en række af objekter i mongodb

  4. Indirekte ændring af overbelastet ejendom App\Dossier::$program har ingen effekt