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

MongoDB:forHver vs Hent + hver

De to udsagn gør stort set det samme på kerne-API-niveauet, som er at hente markøren og transformere resultaterne. Der er dog en "kerne" forskel om ydeevne:

  • .forEach() vil transformere markørresultaterne "en ad gangen" og behandle den iteratorfunktion, den leveres.

  • .fetch() på den anden side får "arrayet" fra markøren "alt på én gang", hvilket betyder, at det hele er "i hukommelsen" i ét hit.

Så uanset hvad, er ingen af ​​dem faktisk "hurtigere" til at udføre "kerne"-operationen med at hente fra markøren på forespørgslen. At ikke evaluere et "udtryk" på hver markøriteration "kan være" lidt hurtigere, så .fetch() kan vinde lidt her.

Den store store fangst er selvfølgelig "alt er nu i hukommelsen", så der er "overhead" ved at gøre det at overveje. Ligeledes på tidspunktet for .fetch() _.each() er endnu ikke behandlet, som man siger. "Det, du "vinder" på gyngerne, "løser du sandsynligvis" i rundkørslerne" .

Uden fuld benchmarking af specifikke sager vil "timingerne" sandsynligvis være ens. Og generisk benchmarking er næsten ubrugelig, medmindre det specifikt anvender størrelsen af ​​datasæt, du arbejder med.

Den generelle sag kommer derfor ud, "Omtrent det samme" , Men ved at bruge .fetch() kommer til at forbruge mere hukommelse end blot at gentage en markør fra starten.




  1. hvordan man indstiller mongod --dbpath

  2. Hent data fra samling b ikke i samling a i en MongoDB shell-forespørgsel

  3. Overvågning af Percona Server til MongoDB - Nøglemålinger

  4. Hvordan eksporterer man et objekt, der kun bliver tilgængeligt i et asynkront tilbagekald?