MongoDB $Max-operatør

Mongodb Max Operator



MongoDB kom opp med mange operatører for å utføre spesialtransaksjoner som å oppdatere postene, legge til en ny post og vise postene under en bestemt tilstand. En av disse operatørene er '$max'-operatøren som brukes til å se etter den største verdien i posten. Bortsett fra det kan vi bruke den til å oppdatere den minste verdien med en ny største verdi etter å ha sammenlignet dem i funksjonsinstruksjonen for 'oppdatering'. Den andre bruken av '$max'-operatoren er å gruppere og vise postene til en bestemt samling på en måte som bare kan vise den største verdien mens den ignorerer den minste verdien når det er noen dupliserte poster i databasen. I denne veiledningen skal vi bruke enkle spørringseksempler for å diskutere de tidligere nevnte brukene av '$max'-operatoren i MongoDB-kommandolinjeverktøyet i Windows-plattformen vår.

Eksempel 1:

Fra og med illustrasjonen for å diskutere og hvordan '$max'-operatoren fungerer i MongoDB-skallet, må vi ha en samling kalt 'data' som allerede må opprettes. For å opprette denne samlingen, må vi legge til noen poster direkte i den uten bruk av noen 'opprett'-instruksjoner. Innsettingsinstruksjonen er nok til å lage en samling og legge til postene i den. Vi bruker funksjonen 'insertMany' i spørringen for å legge til fire poster, som hver har 4 felt av forskjellige typer.

test > db.data.insertMany ( [ { 'id' : en , 'Navn' : 'Bravo' , 'Lønn' : 65 000 , 'Alder' : 44 } ,
... { 'id' : 2 , 'Navn' : 'Stephen' , 'Lønn' : 77 000 , 'Alder' : 55 } ,
... { 'id' : 3 , 'Navn' : 'Maria' , 'Lønn' : 42000 , 'Alder' : 27 } ,
... { 'id' : 4 , 'Navn' : 'Hawkin' , 'Lønn' : 58 000 , 'Alder' : 33 } ] )







Insert-kommandoen er vellykket og utdatameldingen viser at postene er lagt til.



Etter å ha satt inn postene i 'data'-samlingen til MongoDB vår, er det på tide å se disse postene på skallet. Dermed kjører vi funksjonsinstruksjonen 'find()' på MongoDB Cli etterfulgt av 'forEach()'-funksjonen, og tar printjson-argumentet til å vise et resultat i JSON-formatet. Resultatet som vises i skallet viser totalt 4 dokumenter i samlingen som vises i følgende utdatabilde:



test > db.data.finn ( ) .for hver ( printjson )





La oss prøve '$max'-operatoren i oppdateringskommandoen til MongoDB for å endre de allerede innsatte postene. Dermed brukes updateOne() her for å bare endre en enkelt post for 'data'-innsamling som en spesifikk post der 'id'-feltet har en verdi på '2'. Operatoren '$max' brukes på 'Lønn'-feltet for 'data'-innsamling for å sjekke om 'Lønn'-feltet har en verdi som er større enn 55000. Hvis ikke, oppdater posten med 55000. Utdataresultatet for dette updateOne() funksjonsspørring som viser en '0' modifikasjonsantallet da post '2' har mindre enn 55000 lønnsverdi.

test > db.data.updateOne ( { id: 2 } , { $maks : { Lønn: 55 000 } } )



Etter denne oppdateringen prøver vi den samme 'find()'-funksjonsspørringen for å vise det modifiserte resultatet på MongoDB-kommandolinjeskallet. Men vi får samme utdata som vi fikk før vi brukte 'oppdatering'-instruksjonen. Det var ingen endring fordi 77000-verdien er større enn 55000.

test > db.data.finn ( ) .for hver ( printjson )

La oss prøve den samme updateOne()-spørringen igjen med en liten modifikasjon. Denne gangen prøver vi den høyere verdien som er '85000' enn verdien '77000' som allerede finnes i 'Lønn'-feltet for 'data'-innsamling for å gjøre en forskjell i produksjonen vår. Utdataene viser modifikasjonsantallet '1' denne gangen da '85000'-verdien erstatter den allerede eksisterende verdien av '77000' i feltet etter at sammenligningen skjedde bare på grunn av '$max'-operatoren i denne spørringen.

test > db.data.updateOne ( { id: 2 } , { $maks : { Lønn: 85 000 } } )

Etter å ha erstattet den mindre verdien av '77000' med en ny verdi på '85000' gjennom '$max'-operatoren til MongoDB, bruker vi endelig 'finn()'-funksjonen i 'db'-instruksjonen for å se etter denne oppdateringen, om den er vellykket oppdatert eller ikke. Utdataene viser at verdien i 'Lønn'-feltet til en 2. post i denne samlingen er perfekt oppdatert.

test > db.data.finn ( ) .for hver ( printjson )

Eksempel 2:

La oss hoppe til et annet eksempel for å bruke '$max'-operatoren i MongoDB. Denne gangen forkaster vi '$max'-operatoren for å gruppere og vise de unike postene til en samling hvis det er noen duplikater for de samme feltverdiene. For dette setter vi inn 2 flere poster i 'data'-samlingen til en 'test'-database. Disse postene inneholder de 2 samme verdiene i 'Navn'-feltet som også er i de allerede innsatte 4 postene, og resten er forskjellige. For å sette inn postene bruker vi den samme 'db'-instruksjonen som inneholder 'insertMany'-funksjonen i den for at 'data'-innsamlingen skal bli oppdatert.

test > db.data.insertMany ( [ { 'id' : 5 , 'Navn' : 'Bravo' , 'Lønn' : 35 000 , 'Alder' : Fire fem } ,
{ 'id' : 6 , 'Navn' : 'Hawkin' , 'Lønn' : 67 000 , 'Alder' : 33 } ] )

Instruksjonen er utført vellykket.

Nå som de 2 nye postene er lagt til, kan du også vise dem ved å bruke den samme 'finn'-funksjonen i 'db'-instruksjonen etterfulgt av 'forHver'-funksjonen. Følgende utdata på bildet viser de 2 nye postene på slutten av denne samlingen:

test > db.data.finn ( ) .for hver ( printjson )

Etter å ha vist de 6 postene for 'data'-innsamling, er vi klare til å utføre den samlede funksjonen på den. Derfor brukes 'aggregat'-funksjonen i følgende oppførte spørring. Med denne funksjonen bruker vi «$group»-operatøren til å gruppere posten for en «data»-samling i henhold til de unike navnene på feltet «id» og «Lønn»-feltet. Operatoren '$max' brukes på 'Lønn'-feltet i postene for å få de maksimale verdiene som skal vises. Få den største verdien fra Lønn-feltet i henhold til duplikatnavnene i 'Navn'-feltet som brukes som 'id' for at denne grupperingen skal vises. Totalt 4 poster vises. Den minste verdien (fra de dupliserte postene) ignoreres mens den største verdien vises.

db.data.aggregat ( [ { $gruppe : { _id: ' $navn ' , Lønn: { $maks : ' $Lønn ' } } } ] )

Konklusjon

Det første avsnittet i denne veiledningen hjelper deg å forstå viktigheten av operatører som brukes i MongoDB, spesielt '$max'-operatøren og bruken av den i MongoDB-skallet. Denne veiledningen inneholder to kommandobaserte eksempler som er relatert til '$max'-operatøren for å demonstrere formålet. Ved å gå gjennom MongoDB-illustrasjonene vil du kunne utføre noen nyttige transaksjoner i databasen, enten det handler om å erstatte en allerede eksisterende post med en ny verdi eller vise postene ved å gruppere dem via '$max'-operatoren.