MongoDB Group Aggregation

MongoDB Group Aggregation
Aggregering er prosedyren for å trekke ut data fra en MongoDB -samling. Den behandler mange dokumenter og gir estimerte resultater. Aggregeringen i MongoDB har flere operatører og metoder som utfører forskjellige oppgaver. Blant disse operatørene grupperer $ Group -operatøren dokumentene for hver unike gruppering og ordner dem i henhold til et uttrykk som er definert. Gruppeoperatøren er betydelig i MongoDB siden den letter et bredt spekter av datamanipulasjoner. Gruppegruppeaggregeringen i MongoDB -eksemplet sammen med forskjellige akkumulatorer er gitt nedenfor.

Hvordan fungerer gruppeaggregering i MongoDB?

$ Group -operatøren skal brukes til å gruppere inngangsdokumentene i henhold til det spesifiserte _id -uttrykket. Den skal deretter returnere et enkelt dokument med de totale verdiene for hver separate gruppe. Til å begynne med implementeringen har vi laget "Books" -samlingen i MongoDB. Etter opprettelsen av "Books" -samlingen har vi satt inn dokumentene som er tilknyttet de forskjellige feltene. Dokumentene settes inn i samlingen via InsertMany () -metoden, da spørringen som skal utføres vises nedenfor.

> DB.Bøker.INSERTMANY ([

_id: 1,
Tittel: "Anna Karenina",
Pris: 290,
År: 1879,
Order_status: "In-Stock",
Forfatter:
"Navn": "Leo Tolstoy"

,

_id: 2,
Tittel: "To Kill a Mockingbird",
Pris: 500,
År: 1960,
Order_status: "Out-of-Stock",
Forfatter:
"Navn": "Harper Lee"

,

_id: 3,
Tittel: "Invisible Man",
Pris: 312,
År: 1953,
Order_status: "In-Stock",
Forfatter:
"Navn": "Ralph Ellison"

,

_id: 4,
Tittel: "elsket",
Pris: 370,
År: 1873,
ordre_status: "out_of_stock",
Forfatter:
"Navn": "Toni Morrison"

,

_id: 5,
Tittel: "Ting faller fra hverandre",
Pris: 200,
År: 1958,
Order_status: "In-Stock",
Forfatter:
"Navn": "Chinua Achebe"

,

_id: 6,
Tittel: "The Color Purple",
Pris: 510,
År: 1982,
Order_status: "Out-of-Stock",
Forfatter:
"Navn": "Alice Walker"


])

Dokumentene lagres vellykket i "Books" -samlingen uten å møte noen feil fordi utdataene er anerkjent som "sann". Nå skal vi bruke disse dokumentene fra "Books" -samlingen for å utføre "$ Group" -aggregasjonen.

Eksempel 1: Bruk av $ Groups aggregering

Den enkle bruken av $ Group -aggregeringen er demonstrert her. Den samlede spørringen legger inn "$ group" -operatøren først, deretter tar "$ group" -operatøren ytterligere uttrykk for å generere de grupperte dokumentene.

> DB.Bøker.aggregat ([
$ gruppe: _id: '$ forfatter.Navn'
])

Spørringen ovenfor av $ Group -operatøren er spesifisert med "_id" -feltet for å beregne de totale verdiene for alle inngangsdokumenter. Deretter tildeles "_id" -feltet med "$ forfatteren.Navn ”som danner en annen gruppe på“ _id ”-feltet. De separate verdiene til $ forfatter.Navnet vil bli returnert fordi vi ikke beregner noen akkumulerte verdier. Utførelsen av $ Group Aggregate Query har følgende utdata. _Id -feltet har verdiene til forfatteren.navn.

Eksempel nr. 2: Bruk av $ Group Aggregation med $ Push Acconulator

Eksemplet på $ Groups aggregering bruker enhver akkumulator som allerede er nevnt ovenfor. Men vi kan bruke akkumulatorene i $ Groups aggregering. Akkumulatoroperatørene er de som brukes på andre inngangsdokumentfelt enn de som er "gruppert" under "_id". La oss anta at vi ønsker å skyve uttrykkens felt inn i en matrise, så blir "$ push" -akkumulatoren kalt ut i "$ gruppen" -operatøren. Eksemplet vil hjelpe deg å forstå "$ push" -akkumulatoren til "$ gruppen" tydeligere.

> DB.Bøker.aggregat (
[
$ gruppe: _id: "$ _id", år: $ push: "$ år"
]
).ganske();

Her ønsker vi å gruppere den publiserte årets dato for de gitte bøkene i matrisen. Ovennevnte spørring bør brukes for å oppnå dette. Aggregation -spørringen er utstyrt med uttrykket der "$ Group" -operatøren tar feltuttrykket "_id" og "året" feltuttrykk for å få gruppeåret ved hjelp av $ push -akkumulatoren. Utgangen hentet fra denne spesifikke spørringen oppretter en rekke årsfelt og lagrer det returnerte grupperte dokumentet inne i det.

Eksempel nr. 3: Bruk av $ Group Aggregation med "$ min" -akkumulatoren

Deretter har vi "$ min" akkumulator som brukes i $ Groups aggregering for å få minimum matchende verdi fra hvert dokument i samlingen. Query -uttrykket for $ min akkumulator er gitt nedenfor.

> DB.Bøker.aggregat ([

$ gruppe:
_id:
Tittel: '$ tittel',
ordre_status: '$ order_status'
,
Minprice: $ min: '$ pris'


])

Spørringen har "$ group" aggregeringsuttrykket der vi har gruppert dokumentet for "tittelen" og "order_status" -felt. Deretter ga vi $ min-akkumulatoren som grupperte dokumentene ved å få minimumsprisverdiene fra de ikke-grupperte feltene. Når vi kjører denne spørringen av $ min akkumulator nedenfor, returnerer den grupperte dokumenter etter tittel og ordre_status i en sekvens. Minimumsprisen vises først, og den høyeste prisen på dokumentet er plassert sist.

Eksempel 4: Bruk $ Groups aggregering med $ sum -akkumulatoren

For å få summen av alle de numeriske feltene ved hjelp av $ Group -operatøren, er $ sum akkumulatoroperasjon distribuert. De ikke-numeriske verdiene i samlingene blir vurdert av denne akkumulatoren. I tillegg bruker vi $ Match -aggregeringen her med $ Groups aggregering. $ Match -aggregeringen godtar spørringsbetingelsene som er gitt i et dokument og overfører det matchede dokumentet til $ Groups aggregering som deretter returnerer summen av dokumentet for hver gruppe. For $ sum -akkumulatoren blir spørringen presentert nedenfor.

> DB.Bøker.aggregat ([
$ match: order_status: 'in-lager',
$ gruppe: _id: '$ forfatter.navn ', totalbooks: $ sum: 1
])

Ovennevnte spørsmål om aggregering begynner med $ Match-operatøren som samsvarer med all "order_status" hvis status er "på lager" og sendes til $ gruppen som inndata. Deretter har $ Group -operatøren $ sum akkumulatoruttrykk som gir summen av alle bøkene i aksjen. Merk at “$ sum: 1” legger til 1 til hvert dokument som tilhører samme gruppe. Utgangen her viste bare to grupperte dokumenter som har "Order_status" tilknyttet "In-Stock".

Eksempel nr. 5: Bruk $ Groups aggregering med $ Sort Aggregation

$ Group -operatøren her brukes med "$ sort" -operatøren som brukes til å sortere de grupperte dokumentene. Følgende spørring har tre trinn til sorteringsoperasjonen. Først er $ Match Stage, deretter $ Group Stage, og sist er $ Sort Stage som sorterer det grupperte dokumentet.

> DB.Bøker.aggregat ([
$ match: order_status: 'out-of-stock',
$ gruppe: _id: Authorname: '$ Forfatter.navn ', totalbooks: $ sum: 1,
$ sort: autororname: 1
])

Her har vi hentet det matchede dokumentet hvis "order_status" er utenfor lageret. Deretter er det matchede dokumentet lagt inn i $ Group Stage som grupperte dokumentet med feltet "Authorname" og "TotalBooks". $ Group-uttrykket er assosiert med $ sum-akkumulatoren til totalt antall 'out-of-stock' bøker. De grupperte dokumentene blir deretter sortert med $ sort -uttrykket i stigende rekkefølge som “1” her indikerer den stigende rekkefølgen. Det sorterte gruppedokumentet i den spesifiserte rekkefølgen oppnås i følgende utgang.

Eksempel nr. 6: Bruk $ Groups aggregering for distinkt verdi

Aggregeringsprosedyren grupperer også dokumentene etter elementet ved å bruke $ Group -operatøren for å trekke ut de distinkte elementverdiene. La oss få spørringsuttrykket til denne uttalelsen i MongoDB.

> DB.Bøker.Aggregate ([$ gruppe: _id: "$ tittel"]).ganske();

Aggregation -spørringen brukes på Books Collection for å få den distinkte verdien av gruppedokumentet. $ Gruppen her tar _id -uttrykket som gir ut de distinkte verdiene når vi har lagt inn "tittelen" -feltet til det. Utgangen fra gruppedokumentet oppnås ved å kjøre denne spørringen som har gruppen av tittelnavn mot _id -feltet.

Konklusjon

Guiden hadde som mål å fjerne konseptet med $ Group Aggregation Operator for gruppering av dokumentet i MongoDB -databasen. MongoDB Aggregate -tilnærmingen forbedrer grupperingsfenomenene. Syntaksstrukturen til $ Group -operatøren er demonstrert med eksempelprogrammene. I tillegg til det grunnleggende eksemplet på $ Group -operatørene, har vi også ansatt denne operatøren med noen akkumulatorer som $ push, $ min, $ sum og operatører som $ match og $ sort.