MongoDB sorteer queryresultaten

Mongodb Sorteer Queryresultaten



Bijna alle databasesystemen geven prioriteit aan het sorteren van gegevens voordat deze worden opgehaald, waardoor ze zich onderscheiden van andere methoden voor gegevensopslag. MongoDB heeft ook verschillende manieren om te bepalen hoe de gegevens moeten worden gesorteerd. Meestal gebruiken we de methode sort() om de volgorde te bepalen waarin het document verschijnt. De volgorde van de reeks wordt als parameter doorgegeven aan de methode sort(). De een of meer velden waaruit de methode sort() bestaat, worden vaak gevolgd door een waarde '1' of een '-1'. De methode sort() maakt een query leesbaarder, wat het begrip van een gespecificeerde verzameling verbetert.

Hoe sorteert MongoDB queryresultaten?

De sorteermethode neemt het veld en de bijbehorende waarde als een enkele parameter. De sorteermethode accepteert parameters in het JSON-formaat zoals {Field: Value}. De meerdere velden en waarden kunnen ook worden ingevoerd in de methode sort() om de gesorteerde documenten uit de verzameling te halen. Beschouw het volgende document waarin we vele andere documenten in onze database hebben opgenomen. De naam van deze MongoDB-database is getiteld 'Employees'. De collectie 'Werknemers' bevat alle informatie van de onderstaande werknemers.

db.Werknemers.insertMany([
{
'naam': 'Robert',
'Geboortedatum': '14-05-1993',
'geslacht mannelijk',
'e-mail': ' [e-mail beveiligd] ',
'afdeling': 'Beveiliging',
'salaris': 5000
},
{
'naam': 'kyle',
'Geboortedatum': '31-05-1999',
'geslacht vrouwelijk',
'e-mail': ' [e-mail beveiligd] ',
'afdeling': 'IT',
'salaris' : 6200
},
{
'naam': 'Mattheus',
'Geboortedatum': '26-04-1993',
'geslacht mannelijk',
'e-mail': ' [e-mail beveiligd] ',
'afdeling': 'Rekeningen',
'salaris' : 3500
},
{
'naam': 'Kevin',
'Geboortedatum': '14-07-1991',
'geslacht mannelijk',
'e-mail': ' [e-mail beveiligd] ',
'afdeling': 'Beveiliging',
'salaris' : 4500
},

{
'naam': 'Julia',
'Geboortedatum': '09-12-2000',
'geslacht vrouwelijk',
'e-mail': ' [e-mail beveiligd] ',
'afdeling': 'IT',
'salaris': 2500
}
])

De verzameling 'Werknemer' wordt ingevoegd met de verstrekte documenten waarvan de bevestiging wordt weergegeven in de volgende uitvoer. We gaan dit verzameldocument gebruiken om de functionaliteit van de sorteerqueryresultaten weer te geven.









Voorbeeld # 1: MongoDB ongesorteerde verzameling

Wanneer de zoekopdracht wordt uitgevoerd met de methode find(), levert dit altijd een ongesorteerde verzameling documenten op. Dit kan duidelijker zijn met de onderstaande queryresultaten.



>db.Werknemers.find({},{_id:0})

Hier hebben we een query van de verzameling 'Employee' met de methode find(). De methode find() gebruikt de lege parameter samen met de '_id:0'. Voor een eenvoudiger resultaat wordt de document-ID verwijderd met de operator '_id:0'. Standaard verkrijgen we ongesorteerde verzamelingen wanneer de zoekopdracht wordt doorzocht met de methode find(). De hieronder opgehaalde uitvoer is alle ongesorteerde documenten op een manier die we hebben op het moment van invoegen.





Voorbeeld # 2: MongoDB sorteert queryresultaten in oplopende volgorde

De gesorteerde verzameling in MongoDB wordt verkregen met behulp van de methode sort() die na de methode find() moet worden geplaatst. De methode sort() in MongoDB gebruikt de parameter die is opgenomen in de veldnaam en de sorteervolgorde van het document. We moeten '1' als parameter in het veld invoeren, aangezien we in dit specifieke voorbeeld de documenten in oplopende volgorde zullen ophalen. Het volgende in de sorteerquery resulteert in oplopende volgorde.



>db.Werknemers.find().sort({naam:1})

Hier hebben we de methode sort() gebruikt na de zoekopdracht zoeken. De methode sort() wordt gebruikt om het veld 'name' in oplopende volgorde te sorteren, aangezien de waarde '1' naast het opgegeven veld wordt geplaatst. Merk op dat als de methode sort() niet is opgegeven met een parameterwaarde, de verzameling niet wordt gesorteerd. De uitvoer van de methode sort() wordt verkregen in de standaardvolgorde. De resultaten van de methode sort() op naamveld in oplopende volgorde worden weergegeven in de volgende MongoDB-shell.

Voorbeeld # 3: MongoDB sorteert queryresultaten in aflopende volgorde

Nu tonen we de sorteerqueryresultaten van de MongoDB in aflopende volgorde. Dit soort query is hetzelfde als het bovenstaande voorbeeld, maar met één verschil. Voor aflopende volgorde neemt de methode sort() de waarde '-1' aan voor de kolomnaam. De resultaten van de sorteerquery in aflopende volgorde worden hieronder weergegeven.

>db.Werknemers.find({},{'email':1,_id:0}).sort({'email':-1})

Hier begint de zoekopdracht met de methode find() die het veld 'e-mail' vindt en alleen de waarden van het veld 'e-mail' retourneert. Vervolgens hebben we de methode sort() gespecificeerd die wordt gebruikt om het veld 'e-mail' te sorteren, en de waarde '-1' ernaast geeft aan dat de verkregen sorteerresultaten in aflopende volgorde zullen zijn. De resultaten van de sorteerquery in aflopende volgorde worden opgehaald na uitvoering in de MongoDB-shell.

Voorbeeld # 4: MongoDB sorteer queryresultaten voor meerdere velden

We kunnen de meerdere velden in MongoDB sorteren met de sort() methode. De te sorteren velden moeten worden gedeclareerd in de sort() methode. De sortering is gebaseerd op de declaratievolgorde van de velden en de sorteervolgorde wordt van links naar rechts bekeken. De query voor het sorteren van de meerdere velden zou er als volgt uit moeten zien:

>db.Employees.find({},{_id:0}).sort({'naam':1,'salaris':1})

Hier wordt de methode sort() doorgegeven met de velden 'naam' en 'salaris' die moeten worden gesorteerd. Het veld 'naam' uit de verzameling 'Employee' wordt als eerste gesorteerd omdat dit het eerste argumentveld is van de sort()-methode. Vervolgens sorteert de methode sort() het tweede argumentveld 'salaris'. De volgorde van beide velden is '1', wat aangeeft dat de sortering in oplopende volgorde zal zijn. De uitvoer voor meerdere velden van de sorteerquery wordt gegenereerd in de opgegeven sorteervolgorde hieronder.

Voorbeeld # 5: MongoDB sorteert queryresultaten met limietmethode

Bovendien kan de methode sort() ook worden gecombineerd met de methode limit() die het beperkte aantal gesorteerde documenten op basis van die zoekopdracht geeft. De methode limit() vereist een geheel getal als parameter, wat het aantal documenten beperkt dat in de uitvoerset moet worden opgenomen. Hieronder wordt de zoekquery ingesteld die eerst het document sorteert en vervolgens de gespecificeerde limietdocumenten levert.

>db.Werknemers.find({},{_id:0}).sort({'afdeling':1,'DOB':1}).limit(4).pretty()

Hier hebben we de zoekopdracht waarmee de sorteerbewerking voor de kolom 'afdeling' en vervolgens voor de kolom 'DOB' in oplopende volgorde wordt gestart met behulp van de sort()-methode. Zodra het sorteren is voltooid, hebben we de methode limit() ernaast geplaatst om het beperkte document op te halen. De methode limit() krijgt een numerieke waarde '4', wat betekent dat er slechts vier gesorteerde documenten worden weergegeven in de uitvoer, zoals weergegeven in het volgende scherm:

Voorbeeld # 6: MongoDB sorteert queryresultaten met $sort-aggregatie

In alle bovenstaande voorbeelden hebben we het sorteren uitgevoerd via de sort() methode van MongoDB. Er is een andere manier om te sorteren in MongoDB, die wordt bereikt door de $sort-aggregatie. De operator $sort sorteert alle invoerdocumenten die vervolgens de gesorteerde documenten terugsturen naar de pijplijn. De operator $sort wordt toegepast op de verzameling 'Werknemers' hieronder.

db.Employees.aggregate([ { $sort : { salaris : 1, _id: -1 } } ])

Hier hebben we de geaggregeerde methode genoemd waarin we de operator '$ sort' kunnen gebruiken. Dan hebben we de $sort-operatoruitdrukking die de kolom 'salaris' in oplopende volgorde sorteert en de kolom 'id' in aflopende volgorde. De $sort-aggregatie toegepast op het veld levert de volgende resultaten op:

Voorbeeld # 6: MongoDB sorteer queryresultaten met Skip-methode

De sort() methode kan ook gecombineerd worden met de skip() methode. De resulterende gegevensset kan een bepaald aantal documenten bevatten dat wordt genegeerd met behulp van de skip()-methode. Net als de methode limit() accepteert de methode skip() ook de numerieke waarde die het aantal documenten aangeeft dat moet worden overgeslagen. We hebben de methode sort() gecombineerd met de methode skip() in de sorteerquery.

>db.Werknemers.find({},{_id:0}).sort({'salaris':1}).skip(4).pretty()

Hier hebben we de methode skip() naast de methode sort() gebruikt. Wanneer de sort()-methode de documenten sorteert, geeft deze de sorteeruitvoer door aan de sort()-methode. Daarna verwijderde de methode skip() de eerste vier gesorteerde documenten uit de verzameling.

Conclusie

Het artikel gaat over de sorteerqueryresultaten in MongoDB. We hebben hiervoor de methode sort() gebruikt die de records in een bepaalde volgorde organiseert. We hebben ook de methode sort() gebruikt voor meerdere sorteringen over meerdere velden. De methode sort() wordt vervolgens gecombineerd met de methoden limit() en skip() om de gesorteerde documenten te sorteren met behulp van deze bewerkingen. Daarnaast hebben we de $sort-aggregatie geleverd voor sorteerqueryresultaten in MongoDB.