Hvordan sorterer MongoDB søkeresultater?
Sorteringsmetoden tar feltet og dets tilhørende verdi som en enkelt parameter. Sorteringsmetoden godtar parametere i JSON-formatet som {Field: Value}. De flere feltene og verdiene kan også legges inn i sort()-metoden for å hente de sorterte dokumentene fra samlingen. Tenk på følgende dokument der vi har satt inn mange andre dokumenter i databasen vår. Navnet på denne MongoDB-databasen har tittelen 'Ansatte'. 'Ansatte'-samlingen har all informasjon om de ansatte vist nedenfor.
db.Employees.insertMany([{
'name': 'Robert',
'DOB': '14-05-1993',
'Kjønn Mann',
'e-post': ' [e-postbeskyttet] ',
'avdeling': 'Sikkerhet',
'lønn' : 5000
},
{
'name': 'kyle',
'DOB': '31-05-1999',
'kjønn kvinnelig',
'e-post': ' [e-postbeskyttet] ',
'avdeling': 'IT',
'lønn' : 6200
},
{
'name': 'Matthew',
'DOB': '26-04-1993',
'Kjønn Mann',
'e-post': ' [e-postbeskyttet] ',
'avdeling': 'Kontoer',
'lønn' : 3500
},
{
'name': 'Kevin',
'DOB': '14-07-1991',
'Kjønn Mann',
'e-post': ' [e-postbeskyttet] ',
'department': 'Sikkerhet',
'lønn' : 4500
},
{
'name': 'Julia',
'DOB': '09-12-2000',
'kjønn kvinnelig',
'e-post': ' [e-postbeskyttet] ',
'avdeling': 'IT',
'lønn' : 2500
}
])
Samlingen 'Ansatt' settes inn med de leverte dokumentene hvis bekreftelse vises i følgende utgang. Vi skal bruke dette samlingsdokumentet for å vise funksjonaliteten til resultatene for sorteringsspørringen.
Eksempel # 1: MongoDB Usortert samling
Når søket utføres med find()-metoden, gir det alltid en usortert samling av dokumenter. Dette kan være klarere med søkeresultatene nedenfor.
>db.Employees.find({},{_id:0})
Her har vi en spørring av 'Employee'-samlingen med find()-metoden. Find()-metoden tar den tomme parameteren sammen med '_id:0'. For et enklere resultat fjernes dokument-ID-en ved å bruke '_id:0'-operatoren. Som standard får vi usorterte samlinger når søket søkes med metoden find(). Utdataene som hentes nedenfor er alle usorterte dokumenter på en måte som vi har ved innsettingstidspunktet.
Eksempel # 2: MongoDB Sorter søkeresultater i stigende rekkefølge
Den sorterte samlingen i MongoDB oppnås ved å bruke sort()-metoden som skal plasseres etter find()-metoden. Sort()-metoden i MongoDB tar parameteren som er inkludert i feltnavnet og sorteringsrekkefølgen på dokumentet. Vi må angi '1' som en parameter i feltet siden vi skal hente dokumentene i stigende rekkefølge i dette spesielle eksemplet. Følgende i sorteringsspørringen resulterer i stigende rekkefølge.
>db.Employees.find().sort({name:1})
Her har vi brukt sort()-metoden etter søk-søket. Sort()-metoden brukes til å sortere feltet 'navn' i stigende rekkefølge ettersom verdien '1' plasseres ved siden av det angitte feltet. Merk at hvis sort()-metoden ikke er spesifisert med noen parametrisk verdi, vil ikke samlingen bli sortert. Utdataene fra sort()-metoden vil bli hentet i standardrekkefølgen. Resultatene av sort()-metoden etter navn-feltet i stigende rekkefølge vises i følgende MongoDB-skall.
Eksempel # 3: MongoDB Sorter søkeresultater i synkende rekkefølge
Nå viser vi sorteringsspørringsresultatene til MongoDB i synkende rekkefølge. Denne typen søk er den samme som eksemplet ovenfor, men med én forskjell. For synkende rekkefølge tar sort()-metoden verdien '-1' mot kolonnenavnet. Sorteringsspørringens resultater i synkende rekkefølge er gitt nedenfor.
>db.Employees.find({},{'email':1,_id:0}).sort({'email':-1})Her begynner søket med find()-metoden som finner feltet 'e-post' og returnerer bare feltet 'e-post'-verdier. Deretter har vi spesifisert sort()-metoden som brukes til å sortere 'e-post'-feltet, og verdien '-1' ved siden av det indikerer at sorteringsresultatene som oppnås vil være i synkende rekkefølge. Sorteringsresultatene i synkende rekkefølge hentes etter at de er utført i MongoDB-skallet.
Eksempel # 4: MongoDB Sorter spørringsresultater for flere felt
Vi kan sortere de flere feltene i MongoDB med sort()-metoden. Feltene som skal sorteres skal deklareres i sort()-metoden. Sorteringen er basert på deklarasjonsrekkefølgen til feltene og sorteringsrekkefølgen undersøkes fra venstre mot høyre. Spørsmålet for å sortere de flere feltene skal se slik ut:
>db.Employees.find({},{_id:0}).sort({'name':1,'salary':1})Her sendes sort()-metoden med 'navn' og 'lønn'-feltene som skal sorteres. Feltet 'navn' fra samlingen 'Ansatt' sorteres først fordi det er det første argumentfeltet i sort()-metoden. Deretter sorterer sort()-metoden det andre argumentfeltet 'lønn'. Rekkefølgen på begge feltene er '1' som indikerer at sorteringen vil være i stigende rekkefølge. Utdata for flere felt med sorteringsspørring genereres i den angitte sorteringsrekkefølgen nedenfor.
Eksempel # 5: MongoDB Sorter søkeresultater med Limit Method
Videre kan sort()-metoden også kombineres med limit()-metoden som gir det begrensede antallet av de sorterte dokumentene etter det søket. Limit()-metoden krever et heltall som parameter, som begrenser antall dokumenter som skal inkluderes i utdatasettet. Søket stilles inn under som først sorterer dokumentet og deretter gir de angitte grensedokumentene.
>db.Employees.find({},{_id:0}).sort({'department':1,'DOB':1}).limit(4).pretty()Her har vi søket som starter sorteringsoperasjonen for «avdeling»-kolonnen og deretter for «DOB»-kolonnen i stigende rekkefølge ved å bruke sort()-metoden. Når sorteringen er fullført, har vi plassert limit()-metoden ved siden av den for å hente det begrensede dokumentet. Limit()-metoden er gitt en numerisk verdi '4', som betyr at den bare viser fire sorterte dokumenter til utdataene som vist i følgende skjermbilde:
Eksempel # 6: MongoDB Sorter spørringsresultater med $sort-aggregering
I alle eksemplene ovenfor har vi utført sorteringen via sort()-metoden til MongoDB. Det er en annen måte å sortere på i MongoDB som oppnås gjennom $sort-aggregeringen. $sort-operatøren sorterer alle inndatadokumenter som deretter returnerer de sorterte dokumentene til rørledningen. $sort-operatøren brukes på 'Ansatte'-samlingen nedenfor.
db.Employees.aggregate([ { $sort : { salary : 1, _id: -1 } } ])Her har vi kalt ut aggregeringsmetoden der vi kan bruke '$sort'-operatoren. Deretter har vi $sort-operatoruttrykket som sorterer kolonnen 'lønn' i stigende rekkefølge og 'id'-kolonnen i synkende rekkefølge. $sort-aggregeringen brukt på feltet gir følgende resultater:
Eksempel # 6: MongoDB Sorter søkeresultater med Skip-metoden
Sort()-metoden kan også sammenkobles med skip()-metoden. Det resulterende datasettet kan ha et visst antall dokumenter som vil bli ignorert ved å bruke skip()-metoden. I likhet med limit()-metoden, aksepterer skip()-metoden også den numeriske verdien som indikerer antall dokumenter som skal hoppes over. Vi har kombinert sort()-metoden med skip()-metoden i sorteringsspørringen.
>db.Employees.find({},{_id:0}).sort({'salary':1}).skip(4).pretty()Her har vi brukt skip()-metoden ved siden av sort()-metoden. Når sort()-metoden sorterer dokumentene, sender den sorteringsutdataene til sort()-metoden. Etter det fjernet skip()-metoden de fire første sorterte dokumentene fra samlingen.
Konklusjon
Artikkelen handler om sorteringssøkresultatene i MongoDB. Vi har brukt sort()-metoden for dette formålet som organiserer postene i en spesifisert sekvens. Vi har også brukt sort()-metoden for multippel sortering på tvers av flere felt. Sort()-metoden blir deretter paret med metodene limit() og skip() til de sorterte dokumentene ved å bruke disse operasjonene. I tillegg har vi gitt $sort-aggregeringen for sorteringsspørringsresultater i MongoDB.