MongoDB Sort() & Limit()-forespørgsel med Sorter efter eksempler
⚡ Smart opsummering
MongoDB Sort() og Limit() forespørgselsmodifikatorer styrer, hvor mange dokumenter en forespørgsel returnerer, og i hvilken rækkefølge. limit() metoden begrænser antallet af resultater, mens sort() arrangerer dokumenter i stigende eller faldende rækkefølge ved hjælp af værdier på 1 eller -1.
Hvad er Forespørgselsændringer?
MongoDB giver forespørgselsmodifikatorer såsom "limit" og "Orders" klausulen for at give mere fleksibilitet, når forespørgsler udføres. Vi vil tage et kig på følgende forespørgselsmodifikatorer
MongoDB Begræns forespørgselsresultater
Denne modifikator bruges til at begrænse antallet af dokumenter, der returneres i resultatsættet for en forespørgsel. Følgende eksempel viser, hvordan dette kan gøres.
db.Employee.find().limit(2).forEach(printjson);
Code Forklaring
- Ovenstående kode tager find-funktionen, som returnerer alle dokumenterne i samlingen, men bruger derefter limit-klausulen til at begrænse antallet af dokumenter, der returneres til kun 2.
Produktion
Hvis kommandoen udføres med succes, vil følgende output blive vist
Outputtet viser tydeligt, at da der er en grænsemodifikator, så returneres højst kun 2 poster som en del af resultatsættet baseret på ObjectId i stigende rækkefølge.
MongoDB Sorter efter faldende rækkefølge
Man kan specificere rækkefølgen af dokumenter, der skal returneres baseret på stigende eller faldende rækkefølge af enhver nøgle i samlingen. Følgende eksempel viser, hvordan dette kan gøres.
db.Employee.find().sort({Employeeid:-1}).forEach(printjson)
Code Forklaring
- Ovenstående kode tager sorteringsfunktionen, som returnerer alle dokumenterne i samlingen, men bruger derefter modifikatoren til at ændre rækkefølgen, som posterne returneres i. Her angiver -1, at vi ønsker at returnere dokumenterne baseret på den faldende rækkefølge af medarbejder-id.
Hvis kommandoen udføres med succes, vil følgende output blive vist
Produktion
Outputtet viser tydeligt, at dokumenterne returneres i faldende rækkefølge efter medarbejder.
Stigende rækkefølge er defineret ved værdi 1.
MongoDB Sortér efter stigende rækkefølge
Ligesom sort() kan returnere dokumenter i faldende rækkefølge, kan den også returnere dem i stigende rækkefølge. Stigende rækkefølge er defineret af værdien 1 i sorteringsobjektet. Dette arrangerer dokumenter fra den mindste værdi til den største, hvilket er nyttigt til at liste poster fra ældste til nyeste eller fra A til Å.
Følgende eksempel sorterer alle medarbejderdokumenter efter Employee-id i stigende rækkefølge:
db.Employee.find().sort({Employeeid:1}).forEach(printjson)
Sådan fungerer forespørgslen:
- find() henter alle dokumenter i Employee-samlingen.
- sort({Employeeid:1}) sorterer resultaterne efter feltet Employeeid, fra det laveste id til det højeste.
- forEach(printjson) udskriver hvert dokument i læsbar JSON.
Når du kører denne kommando, vises dokumenterne i stigende rækkefølge efter Employeeid. Stigende er også standardretningen, så hvis værdien er 1, får du en lav-til-høj rækkefølge på det valgte felt. For at vende resultatet om skal du blot ændre værdien fra 1 til -1, og du kan også bruge chain limit() til kun at returnere de første par sorterede poster.
MongoDB Skip() for paginering
skip()-metoden fortæller MongoDB at ignorere et givet antal dokumenter, før resten returneres. Skip() er sjældent nyttigt i sig selv, men kombineret med limit() opretter det paginering, så du kan vise resultaterne én side ad gangen.
Følgende eksempel springer de første to medarbejdere over og returnerer de næste to:
db.Employee.find().skip(2).limit(2).forEach(printjson)
For at opbygge side-for-side navigation skal du følge dette mønster:
- Bestem sidestørrelsen, for eksempel 2 dokumenter pr. side.
- Gang sidestørrelsen med sidetallet minus en for at få overspringsværdien.
- Send den værdi til skip() og sidestørrelsen til limit().
For eksempel bruger side 1 skip(0).limit(2), side 2 bruger skip(2).limit(2), og side 3 bruger skip(4).limit(2). Tilføj altid også en sort(), så rækkefølgen af dokumenter forbliver stabil på tværs af sider. Bemærk, at meget store skip-værdier kan være langsomme på store samlinger, fordi MongoDB scanner og kasserer stadig de oversprungne dokumenter; intervalbaseret paginering er hurtigere i stor skala.
Sortér efter flere felter i MongoDB
MongoDB kan sortere efter mere end ét felt ad gangen. Du angiver felterne i sorteringsobjektet i prioriteret rækkefølge, og MongoDB sorterer efter det første felt og bruger derefter det næste felt til at bryde båndene og så videre.
Følgende eksempel sorterer medarbejdere efter navn i stigende rækkefølge, og for medarbejdere med samme navn efter Employeeid i faldende rækkefølge:
db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)
Rækkefølgen af nøgler i sorteringsobjektet er vigtig: EmployeeName anvendes først, fordi det vises først. Denne sortering med flere nøgler er nyttig til rapporter, hvor du grupperer efter ét felt og derefter rangerer inden for hver gruppe. For at opnå den bedste ydeevne på store samlinger skal du oprette et sammensat indeks, der matcher de felter og retninger, der bruges i sorteringen.



