Hvordan sorterer MongoDB forespørgselsresultater?
Sorteringsmetoden tager feltet og dets tilhørende værdi som en enkelt parameter. Sorteringsmetoden accepterer parametre i JSON-formatet som {Field: Value}. De flere felter og værdier kan også indtastes i sort()-metoden for at få de sorterede dokumenter fra samlingen. Overvej følgende dokument, hvor vi har indsat mange andre dokumenter i vores database. Navnet på denne MongoDB-database er titlen 'Medarbejdere'. 'Medarbejdere'-samlingen har alle oplysninger om medarbejderne vist nedenfor.
db.Employees.insertMany([{
'name': 'Robert',
'DOB': '14-05-1993',
'gender': 'mandlig',
'e-mail': ' [e-mail-beskyttet] ',
'afdeling': 'Sikkerhed',
'løn' : 5000
},
{
'navn': 'kyle',
'DOB': '31-05-1999',
'køn kvinde',
'e-mail': ' [e-mail-beskyttet] ',
'afdeling': 'IT',
'løn' : 6200
},
{
'name': 'Matthew',
'DOB': '26-04-1993',
'gender': 'mandlig',
'e-mail': ' [e-mail-beskyttet] ',
'afdeling': 'Konti',
'løn' : 3500
},
{
'name': 'Kevin',
'DOB': '14-07-1991',
'gender': 'mandlig',
'e-mail': ' [e-mail-beskyttet] ',
'afdeling': 'Sikkerhed',
'løn' : 4500
},
{
'navn': 'Julia',
'DOB': '09-12-2000',
'køn kvinde',
'e-mail': ' [e-mail-beskyttet] ',
'afdeling': 'IT',
'løn' : 2500
}
])
Samlingen 'Medarbejder' indsættes med de medfølgende dokumenter, hvis bekræftelse er vist i det følgende output. Vi vil bruge dette samlingsdokument til at vise funktionaliteten af sorteringsforespørgselsresultaterne.
Eksempel # 1: MongoDB Usorteret samling
Når søgeforespørgslen udføres med find()-metoden, giver det altid en usorteret samling af dokumenter. Dette kan være tydeligere med forespørgselsresultaterne nedenfor.
>db.Employees.find({},{_id:0})
Her har vi en forespørgsel til 'Employee'-samlingen med find()-metoden. Find()-metoden tager den tomme parameter sammen med '_id:0'. For et enklere resultat fjernes dokument-id'et ved hjælp af '_id:0'-operatoren. Som standard får vi usorterede samlinger, når forespørgslen søges med metoden find(). Det output, der hentes nedenfor, er alle usorterede dokumenter på en måde, som vi har på indsættelsestidspunktet.
Eksempel # 2: MongoDB Sorter forespørgselsresultater i stigende rækkefølge
Den sorterede samling i MongoDB opnås ved at bruge sort()-metoden, som skal placeres efter find()-metoden. Sort()-metoden i MongoDB tager parameteren, som er inkluderet i feltnavnet og sorteringsrækkefølgen for dokumentet. Vi skal indtaste '1' som en parameter i feltet, da vi vil hente dokumenterne i stigende rækkefølge i dette særlige eksempel. Følgende i sorteringsforespørgslen resulterer i stigende rækkefølge.
>db.Employees.find().sort({navn:1})
Her har vi brugt sort() metoden efter find søgeforespørgslen. Sort()-metoden bruges til at sortere feltet 'navn' i stigende rækkefølge, da værdien '1' er placeret ved siden af det angivne felt. Bemærk, at hvis sort()-metoden ikke er angivet med nogen parametrisk værdi, vil samlingen ikke blive sorteret. Outputtet fra sort()-metoden opnås i standardrækkefølgen. Resultaterne af sort()-metoden efter navn-feltet i stigende rækkefølge vises i den følgende MongoDB-skal.
Eksempel # 3: MongoDB Sorter forespørgselsresultater i faldende rækkefølge
Nu viser vi sorteringsforespørgselsresultaterne for MongoDB i faldende rækkefølge. Denne form for forespørgsel er den samme som ovenstående eksempel, men med én forskel. For faldende rækkefølge tager sort()-metoden værdien '-1' mod kolonnenavnet. Sorteringsforespørgslens resultater i faldende rækkefølge er angivet nedenfor.
>db.Employees.find({},{'email':1,_id:0}).sort({'email':-1})Her begynder søgeforespørgslen med find() metoden, som finder feltet 'email' og returnerer kun feltet 'email' værdier. Dernæst har vi specificeret sort()-metoden, som bruges til at sortere 'e-mail'-feltet, og værdien '-1' ved siden af det indikerer, at de opnåede sorteringsresultater vil være i faldende rækkefølge. Sorteringsforespørgselsresultaterne i faldende rækkefølge hentes efter eksekvering i MongoDB-skallen.
Eksempel # 4: MongoDB Sorter forespørgselsresultater for flere felter
Vi kan sortere de flere felter i MongoDB med sort()-metoden. Felterne, der skal sorteres, skal erklæres i sort()-metoden. Sorteringen er baseret på felternes deklarationsrækkefølge, og sorteringsrækkefølgen undersøges fra venstre mod højre. Forespørgslen til at sortere de flere felter skal se sådan ud:
>db.Employees.find({},{_id:0}).sort({'navn':1,'salary':1})Her sendes sort()-metoden med felterne 'navn' og 'løn', der skal sorteres. Feltet 'navn' fra samlingen 'Medarbejder' sorteres først, fordi det er det første argumentfelt i sort()-metoden. Derefter sorterer sort()-metoden det andet argumentfelt 'løn'. Rækkefølgen af begge felter er '1', hvilket indikerer, at sorteringen vil være i stigende rækkefølge. Outputtet for flere felter af sorteringsforespørgsel genereres i den angivne sorteringsrækkefølge nedenfor.
Eksempel # 5: MongoDB Sorter forespørgselsresultater med Limit Method
Desuden kan sort()-metoden også kombineres med limit()-metoden, som giver det begrænsede antal af de sorterede dokumenter ved den pågældende søgeforespørgsel. Limit()-metoden kræver et heltal som parameter, hvilket begrænser antallet af dokumenter, der skal inkluderes i outputsættet. Søgeforespørgslen er angivet nedenfor, som først sorterer dokumentet og derefter leverer de angivne grænsedokumenter.
>db.Employees.find({},{_id:0}).sort({'afdeling':1,'DOB':1}).limit(4).pretty()Her har vi søgeforespørgslen, som starter sorteringsoperationen for kolonnen 'afdeling' og derefter for kolonnen 'DOB' i stigende rækkefølge ved at bruge sort()-metoden. Når sorteringen er gennemført, har vi placeret limit() metoden ved siden af den for at hente det begrænsede dokument. Limit()-metoden får en numerisk værdi '4', hvilket betyder, at den kun viser fire sorterede dokumenter til output som vist på følgende skærm:
Eksempel # 6: MongoDB Sorter forespørgselsresultater med $sort Aggregation
I alle eksemplerne ovenfor har vi udført sorteringen via sort()-metoden i MongoDB. Der er en anden måde at sortere på i MongoDB, som opnås gennem $sort-sammenlægningen. $sort-operatoren sorterer alle inputdokumenter, som derefter returnerer de sorterede dokumenter til pipelinen. $sort-operatøren anvendes på 'Medarbejdere'-samlingen nedenfor.
db.Employees.aggregate([ { $sort : { salary : 1, _id: -1 } } ])Her har vi kaldt den aggregerede metode, hvori vi kan bruge '$sort'-operatoren. Så har vi $sort-operatorudtrykket, som sorterer kolonnen 'løn' i stigende rækkefølge og kolonnen 'id' i faldende rækkefølge. $sort-sammenlægningen anvendt på feltet giver følgende resultater:
Eksempel # 6: MongoDB Sorter forespørgselsresultater med Skip-metoden
Sort()-metoden kan også parres med skip()-metoden. Det resulterende datasæt kan have et vist antal dokumenter, som vil blive ignoreret ved brug af skip()-metoden. Ligesom limit()-metoden accepterer skip()-metoden også den numeriske værdi, som angiver antallet af dokumenter, der skal springes over. Vi har kombineret sort()-metoden med skip()-metoden i sort-forespørgslen.
>db.Employees.find({},{_id:0}).sort({'salary':1}).skip(4).pretty()Her har vi brugt skip()-metoden ved siden af sort()-metoden. Når sort()-metoden sorterer dokumenterne, sender den sorteringsoutputtet til sort()-metoden. Derefter fjernede skip()-metoden de første fire sorterede dokumenter fra samlingen.
Konklusion
Artiklen handler om sorteringsforespørgselsresultaterne i MongoDB. Vi har brugt sort() metoden til dette formål, som organiserer posterne i en specificeret rækkefølge. Vi har også brugt sort()-metoden til multipel sortering på tværs af flere felter. Sort()-metoden parres derefter med limit()- og skip()-metoderne til de sorterede dokumenter ved hjælp af disse operationer. Derudover har vi leveret $sort-sammenlægningen til sorteringsforespørgselsresultater i MongoDB.