MongoDB $ rang

MongoDB $ rang
Hvert dokument i en samling får en tydelig rangering av $ Rank -operatøren i MongoDB etter et sett med sorteringsregler. Rangeringen bestemmes av sekvensen av postene i resultatsettet. Det brukes sammen med $ setwindowfields -operasjonen for å legge til et nytt felt med den medfølgende rangering til hver post. Dette gjør det enkelt å rangere dokumenter etter spesielle standarder, som score og er nyttig for aktiviteter som å lage toppliste eller produsere resultatrapporter.

Ved å bruke en samling testresultater som eksempel, kan du bruke $ rangeringsoperatøren for å rangere deltakerne i henhold til testresultatene deres. Du kan deretter bruke denne rangering i påfølgende beregninger eller spørsmål. Å finne topp og laveste utøvere i et datasett, i tillegg til å sammenligne den relative ytelsen til forskjellige mennesker eller grupper, er viktig. Denne guiden hjelper deg med å få en ide om bruken av rangeringsoperatøren i MongoDB.

Lag MongoDB -samling

Før vi hopper til emnet, bør vi skape et miljø å jobbe med. Derfor har vi allerede installert og konfigurert MongoDB -databasen på maskinen vår. Kommandoen nedenfor blir utført i MongoDB -kommandolinjegrensesnittet. "Testen" før ">" -symbolet indikerer at instruksjonen blir utført i "test" -databasen. Kommandoen som blir utført er “DB.CreateCollection (“Resultat”) ”. Denne kommandoen oppretter en ny samling i "Test" -databasen kalt "Resultat". Responsen som er gitt er “OK: 1”. Dette indikerer at kommandoen var vellykket og at samlingen “Resultat” ble opprettet vellykket. “Test” er navnet på databasen som brukes.

Test> DB.CreateCollection ("Resultat")
OK: 1

Sett inn plate til samling

Selv om vi har laget en ny samling, er den fremdeles tom. Vi må ha minst 2 poster i et samling "resultat" for å bruke rangeringsoperatøren på den. Koden nedenfor setter inn flere dokumenter i en samling som heter "Resultat" i en MongoDB -database. Hver plate dekker to felt, “STD” og “Score”. Det "STD" -feltet representerer navnet på en student, og "poengsum" -feltet representerer poengsummen deres på en test. Koden setter inn 15 dokumenter totalt, med hvert dokument som representerer en annen student og deres respektive poengsum.

Hvert dokument er atskilt med komma og vedlagt i krøllete seler . Poengene varierer fra -2 til 99 og navnene på studentene er Nina, Johny, Eden, Robert og Lia. Hver student har minst 2 score som brukes til 2 forskjellige fag. Innsetting av disse dokumentene er anerkjent av databasen, og koden returnerer en liste over unike identifikatorer (ObjectIDs) for hvert dokument for hvert dokument.

Test> DB.Resultat.InsertMany ([std: "Nina", score: 56, std: "johny", score: 77, std: "Eden", score: 32, std: "Robert", score: 96 , std: "lia", score: 12, std: "nina", score: 76, std: "johny", score: 87, std: "Eden", score: 52, STD: "Robert", poengsum: 99, std: "lia", score: 42, std: "nina", score: 32, std: "johny", score: 67, std: "Eden", score: 42, std: "Robert", score: 89, std: "lia", score: -2])
anerkjent: sant,
innsats:
'0': ObjectId ("63CD0BB2F114CB71B42E38E5"),
'1': ObjectId ("63cd0bb2f114cb71b42e38e6"),
'2': ObjectId ("63cd0bb2f114cb71b42e38e7"),
'3': ObjectId ("63cd0bb2f114cb71b42e38e8"),
'4': ObjectId ("63cd0bb2f114cb71b42e38e9"),
'5': ObjectId ("63cd0c1bf114cb71b42e38ea"),
'6': ObjectId ("63cd0c1bf114cb71b42e38eb"),
'7': ObjectId ("63cd0c1bf114cb71b42e38ec"),
'8': ObjectId ("63cd0c1bf114cb71b42e38ed"),
'9': ObjectId ("63cd0c1bf114cb71b42e38ee"),
'10': ObjectId ("63cd0cd6f114cb71b42e38ef"),
'11': ObjectId ("63CD0CD6F114CB71B42E38F0"),
'12': ObjectId ("63cd0cd6f114cb71b42e38f1"),
'13': ObjectId ("63cd0cd6f114cb71b42e38f2"),
'14': ObjectId ("63cd0cd6f114cb71b42e38f3")

Vis MongoDB -poster

Etter å ha satt inn de 15 postene med suksess i samlingen “Resultat”, vil vi se på alle postene igjen. For dette har kommandoen vi har brukt blitt knyttet nedenfor. Denne spørringen bruker Find () -metoden for å hente alle dokumenter i en samling som heter “Resultat”. Find () -metoden brukes til å returnere en rekke dokumenter i samlingen "Resultat" som samsvarer med den spesifiserte spørringen. I dette tilfellet er ingen spørsmål spesifisert. Så alle de 15 dokumentene i samlingen "Resultat" blir returnert. Utgangsdokumentene inneholder tre felt: _id, STD og poengsum. _Id -feltet er en unik identifikator som er tildelt hvert dokument av MongoDB, STD -feltet inneholder navnet på studenten, og poengfeltet inneholder testresultatet for hver student.

Test> DB.Resultat.finne()
[
°,
_id: ObjectId ("63CD0BB2F114CB71B42E38E6"), std: 'johny', score: 77,
°,
°,
°
_id: ObjectId ("63cd0c1bf114cb71b42e38ea"), std: 'nina', score: 76,
_id: ObjectId ("63cd0c1bf114cb71b42e38eb"), std: 'johny', score: 87,
_id: ObjectId ("63cd0c1bf114cb71b42e38ec"), std: 'Eden', score: 52,
_id: ObjectId ("63cd0c1bf114cb71b42e38ed"), std: 'Robert', score: 99,
_id: ObjectId ("63cd0c1bf114cb71b42e38ee"), std: 'lia', score: 42
_id: ObjectId ("63cd0cd6f114cb71b42e38ef"), std: 'nina', score: 32,
_id: ObjectId ("63cd0cd6f114cb71b42e38f0"), std: 'johny', score: 67,
_id: ObjectId ("63cd0cd6f114cb71b42e38f1"), std: 'Eden', score: 42,
°,
°
]

Eksempel nr. 01: Rangering i synkende rekkefølge

Denne kommandoen bruker Aggregate () -metoden for å utføre en aggregeringsoperasjon på en samling kalt "Resultat" i en MongoDB -database. Aggregate () -metoden tar en matrise som argument, der hvert trinn transformerer dataene. I dette tilfellet bruker den første fasen av rørledningen $ SetWindowfields-operatøren som setter vindusfeltene ved å dele opp dokumentene etter "STD" -feltet, og sortere dokumentene etter "poengsum" -feltet i synkende rekkefølge (-1). Utgangsfeltet er deretter spesifisert, som oppretter et nytt felt som heter “RankscoreForstd” og tildeler en rangering til hvert dokument i vinduet ved hjelp av $ Rank -operatøren.

Den endelige produksjonen viser dokumentene i "Resultat" -samlingen med tilleggsfeltet "rankscoreforstd" lagt til hvert dokument, noe som indikerer rangering av studenten basert på poengsummen deres. Registreringene er sortert i synkende rekkefølge og gruppert etter studentnavn. I dette tilfellet rangerer manuset studentene basert på score. Studenten med høyest poengsum får en rangering på 1, studenten med den nest høyeste poengsummen får en rangering på 2, og så videre.

Test> DB.Resultat.Aggregate ([$ setWindowFields: partitionby: "$ std", sortby: score: -1, output: rankscoreforstd: $ rank: ]))
[
°,
°,
°,
°,
°,
°,
°,
°,
°,
°,
°,
°,
°,
°,
°
]

Eksempel # 02: Rangering i stigende rekkefølge

I illustrasjonen ovenfor har vi rangert dokumentene i synkende rekkefølge av poengfeltet ved å bruke poengsumverdien “-1”. Denne gangen vil vi utføre en rangoperasjon på alle dokumentene i stigende rekkefølge av poengfeltet. For dette er det en liten modifisering i den samme aggregatkommandoen, med start fra Aggregate () -metoden som brukes til å behandle data og returnere resultatet i form av ett eller flere dokumenter.

Operatøren på $ setwindowfields brukes til å legge til et nytt felt til hvert dokument basert på den spesifiserte vindusfunksjonen. Kommandoen setter vindusfeltene ved å dele opp dokumentene etter "STD" -feltet, sortere dokumentene etter "poengsum" -feltet i stigende rekkefølge (1) ved å bruke verdien "1" og deretter legge til et nytt felt kalt "RanksCoreForstd" som tildeler en rangering til hvert dokument basert på poengsummen. Utgangen viser en rekke av alle dokumentene i "Resultat" -samlingen, med et ekstra felt "rankscoreforstd" for hvert dokument. I dette tilfellet tildeles hver student en unik rangering, og dokumentene er sortert i stigende rekkefølge på poengsummen.

Test> DB.Resultat.Aggregate ([$ setWindowFields: partitionby: "$ std", sortby: score: 1, output: rankscoreforstd: $ rang: ]))
[
°,
°,
°,
°,
°,
°,
°,
°,
°,
°,
°,
°,
°,
°,
°
]

Konklusjon

Etter å ha introdusert MongoDB -rangeringsoperatøren, diskuterte vi bruken i MongoDB. Etter det skapte vi et miljø for å jobbe med og la til MongoDB -eksempler for å illustrere bruken av rangeringsoperatøren mer presist. Det første eksemplet viser bruken av rangeringsoperatøren med "-1" -verdien for å vise dokumentene i synkende rekkefølge. Mens det andre eksemplet dekker bruken med "1" -verdien for å vise og rangere dokumentene i stigende rekkefølge for samling.