MongoDB Sort() & Limit() Query met volgorde op voorbeelden
⚡ Slimme samenvatting
MongoDB De querymodifiers sort() en limit() bepalen hoeveel documenten een query retourneert en in welke volgorde. De limit()-methode beperkt het aantal resultaten, terwijl sort() documenten in oplopende of aflopende volgorde rangschikt met behulp van de waarden 1 of -1.
Wat zijn zoekopdrachtwijzigingen?
Mongo DB biedt querymodifiers zoals de 'limit'- en 'Orders'-clausule om meer flexibiliteit te bieden bij het uitvoeren van query's. We zullen de volgende querymodifiers bekijken
MongoDB Beperk zoekopdrachtresultaten
Deze modifier wordt gebruikt om het aantal documenten te beperken dat wordt geretourneerd in de result set voor een query. Het volgende voorbeeld laat zien hoe dit kan worden gedaan.
db.Employee.find().limit(2).forEach(printjson);
Code Uitleg
- De bovenstaande code gebruikt de find-functie die alle documenten in de collectie retourneert, maar gebruikt vervolgens de limit-clausule om het aantal geretourneerde documenten te beperken tot slechts 2.
uitgang
Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven
Uit de uitvoer blijkt duidelijk dat, aangezien er een limietmodifier is, er maximaal slechts twee records worden geretourneerd als onderdeel van de resultatenset op basis van de ObjectId in oplopende volgorde.
MongoDB Sorteer op aflopende volgorde
Men kan de volgorde van de te retourneren documenten specificeren op basis van oplopende of aflopende volgorde van elke sleutel in de collectie. Het volgende voorbeeld laat zien hoe dit kan worden gedaan.
db.Employee.find().sort({Employeeid:-1}).forEach(printjson)
Code Uitleg
- De bovenstaande code gebruikt de sorteerfunctie die alle documenten in de collectie retourneert, maar gebruikt vervolgens de modifier om de volgorde te wijzigen waarin de records worden geretourneerd. Hier geeft de -1 aan dat we de documenten willen retourneren op basis van de aflopende volgorde van Werknemer-ID.
Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven
uitgang
In de uitvoer zijn duidelijk de teruggestuurde documenten weergegeven, in aflopende volgorde van de Employeeid.
De oplopende volgorde wordt gedefinieerd door waarde 1.
MongoDB Sorteren op oplopende volgorde
Net zoals de functie `sort()` documenten in aflopende volgorde kan retourneren, kan deze ze ook in oplopende volgorde retourneren. Oplopende volgorde wordt gedefinieerd door de waarde 1 in het `sort`-object. Dit rangschikt documenten van de kleinste naar de grootste waarde, wat handig is om records van oudst naar nieuwst of van A tot Z weer te geven.
Het volgende voorbeeld sorteert alle werknemersdocumenten op werknemers-ID in oplopende volgorde:
db.Employee.find().sort({Employeeid:1}).forEach(printjson)
Zo werkt de query:
- De functie find() haalt alle documenten in de Employee-collectie op.
- sort({Employeeid:1}) sorteert de resultaten op basis van het veld Employeeid, van de laagste naar de hoogste id.
- forEach(printjson) print elk document in leesbare JSON.
Wanneer je dit commando uitvoert, worden de documenten weergegeven in oplopende volgorde van Employeeid. Oplopend is ook de standaardrichting, dus als je de waarde op 1 laat staan, krijg je een sortering van laag naar hoog op het gekozen veld. Om het resultaat om te keren, verander je de waarde van 1 naar -1. Je kunt ook limit() gebruiken om alleen de eerste paar gesorteerde records weer te geven.
MongoDB Skip() voor paginering
De skip()-methode vertelt MongoDB Om een bepaald aantal documenten te negeren voordat de rest wordt geretourneerd. Op zichzelf is skip() zelden nuttig, maar in combinatie met limit() zorgt het voor paginering, waardoor je resultaten pagina voor pagina kunt weergeven.
Het volgende voorbeeld slaat de eerste twee werknemers over en geeft de volgende twee weer:
db.Employee.find().skip(2).limit(2).forEach(printjson)
Volg dit patroon om pagina-voor-pagina navigatie op te bouwen:
- Bepaal het paginaformaat, bijvoorbeeld 2 documenten per pagina.
- Vermenigvuldig de paginagrootte met het paginanummer min één om de overgeslagen waarde te verkrijgen.
- Geef die waarde door aan skip() en de paginagrootte aan limit().
Pagina 1 gebruikt bijvoorbeeld skip(0).limit(2), pagina 2 gebruikt skip(2).limit(2) en pagina 3 gebruikt skip(4).limit(2). Voeg altijd ook een sort() toe, zodat de volgorde van de documenten stabiel blijft over de pagina's heen. Houd er rekening mee dat zeer grote skip-waarden traag kunnen zijn bij grote collecties, omdat MongoDB Het systeem scant nog steeds en verwijdert de overgeslagen documenten; paginering op basis van bereik is sneller op grote schaal.
Sorteren op meerdere velden in MongoDB
MongoDB Je kunt op meerdere velden tegelijk sorteren. Je geeft de velden in het sorteerobject op in volgorde van prioriteit, en MongoDB Sorteert op het eerste veld, gebruikt vervolgens het volgende veld om gelijke waarden te bepalen, enzovoort.
Het volgende voorbeeld sorteert medewerkers op naam in oplopende volgorde, en voor medewerkers met dezelfde naam, op medewerkers-ID in aflopende volgorde:
db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)
De volgorde van de sleutels in het sorteerobject is belangrijk: EmployeeName wordt als eerste toegepast omdat deze als eerste voorkomt. Deze sortering op meerdere sleutels is handig voor rapporten waarin u groepeert op één veld en vervolgens binnen elke groep rangschikt. Voor de beste prestaties bij grote collecties kunt u een samengestelde index maken die overeenkomt met de velden en sorteerrichtingen die in de sortering worden gebruikt.



