MongoDB Sort() & Limit() fråga med ordning efter exempel
⚡ Smart sammanfattning
MongoDB Frågemodifierarna Sort() och Limit() styr hur många dokument en fråga returnerar och i vilken ordning. Metoden limit() begränsar antalet resultat, medan sort() ordnar dokument i stigande eller fallande ordning med värdena 1 eller -1.

Vad är frågeändringar?
MongoDB tillhandahåller frågemodifierare som "limit" och "Orders"-satsen för att ge mer flexibilitet vid exekvering av frågor. Vi kommer att ta en titt på följande frågemodifierare
MongoDB Begränsa frågeresultat
Denna modifierare används för att begränsa antalet dokument som returneras i resultatuppsättningen för en fråga. Följande exempel visar hur detta kan göras.
db.Employee.find().limit(2).forEach(printjson);
Code Förklaring
- Ovanstående kod tar sökfunktionen som returnerar alla dokument i samlingen men använder sedan limitsatsen för att begränsa antalet dokument som returneras till bara 2.
Produktion
Om kommandot utförs framgångsrikt kommer följande utdata att visas
Utdata visar tydligt att eftersom det finns en gränsmodifierare, så returneras högst bara 2 poster som en del av resultatuppsättningen baserat på ObjectId i stigande ordning.
MongoDB Sortera efter fallande ordning
Man kan specificera ordningen på dokument som ska returneras baserat på stigande eller fallande ordning för valfri nyckel i samlingen. Följande exempel visar hur detta kan göras.
db.Employee.find().sort({Employeeid:-1}).forEach(printjson)
Code Förklaring
- Ovanstående kod tar sorteringsfunktionen som returnerar alla dokument i samlingen men sedan använder modifieraren för att ändra ordningen i vilken posterna returneras. Här indikerar -1 att vi vill returnera dokumenten baserat på den fallande ordningen för anställd-id.
Om kommandot utförs framgångsrikt kommer följande utdata att visas
Produktion
Utdata visar tydligt att dokumenten returneras i fallande ordning för den anställde.
Stigande ordning definieras av värde 1.
MongoDB Sortera efter stigande ordning
Precis som sort() kan returnera dokument i fallande ordning, kan det också returnera dem i stigande ordning. Stigande ordning definieras av värdet 1 i sorteringsobjektet. Detta ordnar dokument från det minsta värdet till det största, vilket är användbart för att lista poster från äldst till nyast eller från A till Ö.
Följande exempel sorterar alla medarbetardokument efter Employee-id i stigande ordning:
db.Employee.find().sort({Employeeid:1}).forEach(printjson)
Så här fungerar frågan:
- find() hämtar alla dokument i Employee-samlingen.
- sort({Employeeid:1}) sorterar resultaten efter fältet Employeeid, från det lägsta id:t till det högsta.
- forEach(printjson) skriver ut varje dokument i läsbar JSON.
När du kör det här kommandot visas dokumenten i stigande ordning efter Employeeid. Stigande är också standardriktningen, så om du lämnar värdet 1 får du en låg-till-hög ordning för det valda fältet. För att vända resultatet ändrar du helt enkelt värdet från 1 till -1, och du kan också kedja limit() för att returnera endast de första sorterade posterna.
MongoDB Skip() för paginering
Metoden skip() berättar MongoDB att ignorera ett givet antal dokument innan resten returneras. Skip() är sällan användbart på egen hand, men i kombination med limit() skapar det paginering, vilket låter dig visa resultaten en sida i taget.
Följande exempel hoppar över de två första anställda och returnerar de två nästa:
db.Employee.find().skip(2).limit(2).forEach(printjson)
För att bygga navigering sida för sida, följ detta mönster:
- Bestäm sidstorleken, till exempel 2 dokument per sida.
- Multiplicera sidstorleken med sidnumret minus ett för att få överhoppningsvärdet.
- Skicka det värdet till skip() och sidstorleken till limit().
Till exempel använder sida 1 skip(0).limit(2), sida 2 använder skip(2).limit(2) och sida 3 använder skip(4).limit(2). Lägg alltid till en sort() också, så att dokumentens ordning förblir stabil över sidorna. Observera att mycket stora skip-värden kan vara långsamma på stora samlingar, eftersom MongoDB skannar och ignorerar fortfarande de hoppade dokumenten; intervallbaserad paginering är snabbare i stor skala.
Sortera efter flera fält i MongoDB
MongoDB kan sortera efter mer än ett fält åt gången. Du listar fälten i sorteringsobjektet i prioritetsordning, och MongoDB sorterar efter det första fältet, använder sedan nästa fält för att bryta kopplingar, och så vidare.
Följande exempel sorterar anställda efter namn i stigande ordning, och för anställda med samma namn, efter EmployeeID i fallande ordning:
db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)
Ordningen på nycklarna i sorteringsobjektet spelar roll: EmployeeName tillämpas först eftersom det visas först. Denna sortering med flera nycklar är användbar för rapporter där du grupperar efter ett fält och sedan rangordnar inom varje grupp. För bästa prestanda på stora samlingar, skapa ett sammansatt index som matchar fälten och riktningarna som används i sorteringen.


