MongoDB Kart Reduce

Per dokumentasjon MongoDB, Kart-redusere
er en databehandlings paradigme for kondensering av store datamengder til nyttige aggregerte resultater. MongoDB bruker MapReduce
kommando for kart-redusere driften. MapReduce er vanligvis brukt for å behandle store datasett

MapReduce Command

Følgende er syntaksen av grunn MapReduce kommandoen −.
> Db.collection.mapReduce (function () {Emit (nøkkel, verdi);}, //kartfunksjonen funksjon (nøkkel, verdi) {return reduceFunction} {//redusere funksjon ut: samling, spørring: dokument, liksom: dokument, grense: nummer})

Kartet -redusere funksjon først spør samlingen, kart og resultatet dokumenter å avgi nøkkelverdipar som deretter reduseres basert på tastene som har flere verdier.

I ovennevnte syntaks

kart
er en javascript funksjon som tilordner en verdi med en nøkkel og avgir en nøkkel-valur pair

redusere
er en javscript funksjon som reduserer eller grupper alle dokumentene har samme nøkkel

ut
angir plasseringen av kart redusere søkeresultatet

spør
spesifiserer de valgfrie kriterier for utvelgelse av dokumenter

slags
spesifiserer de valgfrie sorteringskriterier

< p> grense
angir valgfri maksimalt antall dokumenter som skal returneres

Bruke MapReduce

Tenk deg følgende dokumentstrukturen lagre brukerens innlegg. Den dokument lagrer brukernavn til brukeren og status for innlegget
. {"Post_text": "tutorialspoint er en kjempeflott nettside for tutorials", "brukernavn": "mark", "status": "aktiv"}

Nå vil vi bruke en MapReduce funksjon på våre innlegg
samling for å velge alle aktive innlegg, gruppere dem på grunnlag av brukernavn og deretter telle antall poster hver bruker bruke følgende kode −
> db.posts.mapReduce (function () {Emit (this.user_id, 1);}, funksjon (nøkkel, verdier) {return Array.sum (verdier)} {query: {status: "aktiv"}, ut: "post_total"})

Listen MapReduce spør utganger følgende resultat − product: {"resultatet": "post_total", "timeMillis": 9, "teller": {"input": 4, " avgir ": 4," redusere ": 2," output ": 2}," ok ": 1,}

Resultatet viser at totalt 4 dokumenter matchet søket (status:" aktiv "), kartet funksjon slippes 4 dokumenter med nøkkelverdipar og til slutt redusere funksjons gruppert kartlagt dokumenter med de samme tastene i 2.

For å se resultatet av dette MapReduce søket bruke find operatøren −
> db. posts.mapReduce (function () {Emit (this.user_id, 1); }, Funksjon (nøkkel, verdier) {return Array.sum (verdier)} {query: {status: "aktiv"}, ut: "post_total"}) .Finn ()

Listen spørring gir følgende resultat noe som indikerer at både brukere tom Hotell og mark
har to innlegg i aktive stater og minus; product: {"_id": "tom", "verdi": 2} {"_id" : "mark", "verdi": 2}

På lignende måte, MapReduce spørringer kan benyttes for å konstruere store komplekse aggregering spørringer. Bruken av egendefinerte Javascript-funksjoner som gjør bruk av MapReduce svært fleksibel og kraftig.