sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:forEach vs fetch + each

De två påståendena gör i princip samma sak på kärn-API-nivån, vilket är att hämta markören och omvandla resultaten. Det finns dock en "kärn" skillnad om prestanda:

  • .forEach() kommer att omvandla markörresultaten "ett i taget" och bearbeta iteratorfunktionen den tillhandahålls.

  • .fetch() å andra sidan får "arrayen" från markören "allt på en gång", vilket betyder att allt är "i minnet" i en träff.

Så oavsett vad, ingen av dem är faktiskt "snabbare" på att utföra "kärnoperationen" att hämta från markören för frågan. Att inte utvärdera ett "uttryck" på varje marköriteration "kan vara" något snabbare, så .fetch() kan vinna lite här.

Den stora stora haken är naturligtvis "allt är nu i minnet", så det finns "overhead" att göra det att överväga. Likaså vid tidpunkten för .fetch() _.each() är ännu inte behandlat, som man säger. "Det du "vinner" på gungorna "löser du förmodligen" i rondellerna" .

Utan fullständig benchmarking av specifika fall kommer "timingerna" sannolikt att vara liknande. Och generisk benchmarking är näst intill värdelös om den inte specifikt tillämpar storleken på datamängder du arbetar med.

Det allmänna fallet kommer därför ut, "Ungefär detsamma" , dock med .fetch() kommer att förbruka mer minne än att bara iterera en markör från början.




  1. Hur sorterar man två åkrar med mangust?

  2. Deserialiseringsfält när typ ändras med MongoDb csharp-drivrutin

  3. Se utvecklingen av långvarigt mongodb-aggregationsjobb

  4. Kör PDI Kettle på Java - Mongodb Step Missing Plugins