MongoDB Sort() & Limit() spørring med Sorter etter eksempler
⚡ Smart oppsummering
MongoDB Sort()- og Limit()-spørringsmodifikatorene kontrollerer hvor mange dokumenter en spørring returnerer og i hvilken rekkefølge. limit()-metoden setter en grense for antall resultater, mens sort() ordner dokumenter i stigende eller synkende rekkefølge ved hjelp av verdier på 1 eller -1.

Hva er Query Modifications?
MongoDB gir spørringsmodifikatorer som "limit" og "Orders"-klausulen for å gi mer fleksibilitet når du utfører spørringer. Vi vil ta en titt på følgende spørringsmodifikatorer
MongoDB Begrens søkeresultater
Denne modifikatoren brukes til å begrense antall dokumenter som returneres i resultatsettet for en spørring. Følgende eksempel viser hvordan dette kan gjøres.
db.Employee.find().limit(2).forEach(printjson);
Code Forklaring
- Koden ovenfor tar finn-funksjonen som returnerer alle dokumentene i samlingen, men bruker deretter grenseparagrafen for å begrense antallet dokumenter som returneres til bare 2.
Produksjon
Hvis kommandoen utføres vellykket, vil følgende utdata vises
Utdataene viser tydelig at siden det er en grensemodifikator, så returneres på det meste bare 2 poster som en del av resultatsettet basert på ObjectId i stigende rekkefølge.
MongoDB Sorter etter synkende rekkefølge
Man kan spesifisere rekkefølgen på dokumenter som skal returneres basert på stigende eller synkende rekkefølge for hvilken som helst nøkkel i samlingen. Følgende eksempel viser hvordan dette kan gjøres.
db.Employee.find().sort({Employeeid:-1}).forEach(printjson)
Code Forklaring
- Koden ovenfor tar sorteringsfunksjonen som returnerer alle dokumentene i samlingen, men bruker deretter modifikatoren til å endre rekkefølgen postene returneres i. Her indikerer -1 at vi ønsker å returnere dokumentene basert på synkende rekkefølge av ansatt-ID.
Hvis kommandoen utføres vellykket, vil følgende utdata vises
Produksjon
Utdataene viser tydelig at dokumentene blir returnert i synkende rekkefølge av den ansatte.
Stigende rekkefølge er definert av verdi 1.
MongoDB Sorter etter stigende rekkefølge
Akkurat som sort() kan returnere dokumenter i synkende rekkefølge, kan den også returnere dem i stigende rekkefølge. Stigende rekkefølge er definert av verdien 1 i sorteringsobjektet. Dette ordner dokumenter fra den minste verdien til den største, noe som er nyttig for å liste opp poster fra eldst til nyeste eller fra A til Å.
Følgende eksempel sorterer alle ansattdokumenter etter ansatt-ID i stigende rekkefølge:
db.Employee.find().sort({Employeeid:1}).forEach(printjson)
Slik fungerer spørringen:
- find() henter alle dokumenter i Employee-samlingen.
- sort({Employeeid:1}) sorterer resultatene etter Employeeid-feltet, fra den laveste ID-en til den høyeste.
- forEach(printjson) skriver ut hvert dokument i lesbar JSON.
Når du kjører denne kommandoen, vises dokumentene i stigende rekkefølge etter Employeeid. Stigende er også standardretningen, så hvis du lar verdien være 1, får du en lav-til-høy rekkefølge på det valgte feltet. For å reversere resultatet, endrer du ganske enkelt verdien fra 1 til -1, og du kan også kjede limit() for å returnere bare de første få sorterte postene.
MongoDB Skip() for paginering
skip()-metoden forteller MongoDB å ignorere et gitt antall dokumenter før resten returneres. Skip() er sjelden nyttig alene, men kombinert med limit() oppretter det paginering, slik at du kan vise resultatene én side om gangen.
Følgende eksempel hopper over de to første ansatte og returnerer de neste to:
db.Employee.find().skip(2).limit(2).forEach(printjson)
For å bygge side-for-side-navigasjon, følg dette mønsteret:
- Bestem sidestørrelsen, for eksempel 2 dokumenter per side.
- Multipliser sidestørrelsen med sidetallet minus én for å få verdien for å hoppe over.
- Send den verdien til skip() og sidestørrelsen til limit().
For eksempel bruker side 1 skip(0).limit(2), side 2 bruker skip(2).limit(2), og side 3 bruker skip(4).limit(2). Legg alltid til en sort() også, slik at rekkefølgen på dokumentene forblir stabil på tvers av sider. Merk at svært store skip-verdier kan være trege på store samlinger, fordi MongoDB skanner og forkaster fortsatt dokumentene som er hoppet over; områdebasert paginering er raskere i stor skala.
Sorter etter flere felt i MongoDB
MongoDB kan sortere etter mer enn ett felt om gangen. Du lister opp feltene i sorteringsobjektet i prioritert rekkefølge, og MongoDB sorterer etter det første feltet, bruker deretter det neste feltet til å bryte koblinger, og så videre.
Følgende eksempel sorterer ansatte etter navn i stigende rekkefølge, og for ansatte med samme navn, etter Ansatt-ID i synkende rekkefølge:
db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)
Rekkefølgen på nøklene i sorteringsobjektet er viktig: EmployeeName brukes først fordi det vises først. Denne flernøkkelsorteringen er nyttig for rapporter der du grupperer etter ett felt og deretter rangerer innenfor hver gruppe. For best ytelse på store samlinger, opprett en sammensatt indeks som samsvarer med feltene og retningene som brukes i sorteringen.


