MongoDB Sort() & Limit() upit s redoslijedom prema primjerima
โก Pametni saลพetak
MongoDB Modifikatori upita Sort() i Limit() kontroliraju koliko dokumenata upit vraฤa i kojim redoslijedom. Metoda limit() ograniฤava broj rezultata, dok sort() sortira dokumente uzlaznim ili silaznim redoslijedom koristeฤi vrijednosti 1 ili -1.

ล to su izmjene upita?
MongoDB pruลพa modifikatore upita kao ลกto su klauzula 'limit' i 'Orders' za pruลพanje veฤe fleksibilnosti prilikom izvrลกavanja upita. Pogledat ฤemo sljedeฤe modifikatore upita
MongoDB Ograniฤi rezultate upita
Ovaj modifikator se koristi za ograniฤavanje broja dokumenata koji se vraฤaju u skupu rezultata za upit. Sljedeฤi primjer pokazuje kako se to moลพe uฤiniti.
db.Employee.find().limit(2).forEach(printjson);
Code Objaลกnjenje
- Gornji kod preuzima funkciju traลพenja koja vraฤa sve dokumente u kolekciji, ali zatim koristi klauzulu o ograniฤenju da ograniฤi broj dokumenata koji se vraฤaju na samo 2.
Izlaz
Ako je naredba uspjeลกno izvrลกena, prikazat ฤe se sljedeฤi izlaz
Izlaz jasno pokazuje da, buduฤi da postoji modifikator ograniฤenja, vraฤaju se najviลกe samo 2 zapisa kao dio skupa rezultata na temelju ObjectId-a uzlaznim redoslijedom.
MongoDB Poredaj prema silaznom redoslijedu
Moลพe se odrediti redoslijed dokumenata koji se vraฤaju na temelju uzlaznog ili silaznog redoslijeda bilo kojeg kljuฤa u zbirci. Sljedeฤi primjer pokazuje kako se to moลพe uฤiniti.
db.Employee.find().sort({Employeeid:-1}).forEach(printjson)
Code Objaลกnjenje
- Gornji kod preuzima funkciju sortiranja koja vraฤa sve dokumente u kolekciji, ali zatim koristi modifikator za promjenu redoslijeda vraฤanja zapisa. Ovdje -1 oznaฤava da ลพelimo vratiti dokumente na temelju silaznog redoslijeda ID-a zaposlenika.
Ako je naredba uspjeลกno izvrลกena, prikazat ฤe se sljedeฤi izlaz
Izlaz
Izlaz jasno prikazuje dokumente koji se vraฤaju silaznim redoslijedom Employeeid.
Uzlazni poredak definiran je vrijednoลกฤu 1.
MongoDB Sortiraj po rastuฤem redoslijedu
Kao ลกto sort() moลพe vratiti dokumente u silaznom redoslijedu, moลพe ih vratiti i u uzlaznom redoslijedu. Uzlazni redoslijed definiran je vrijednoลกฤu 1 u objektu sort. Ovo sortira dokumente od najmanje do najveฤe vrijednosti, ลกto je korisno za popisivanje zapisa od najstarijeg do najnovijeg ili od A do ลฝ.
Sljedeฤi primjer sortira svaki dokument zaposlenika prema Employeeid-u u rastuฤem redoslijedu:
db.Employee.find().sort({Employeeid:1}).forEach(printjson)
Evo kako upit funkcionira:
- find() dohvaฤa sve dokumente u kolekciji Employee.
- sort({Employeeid:1}) sortira rezultate prema polju Employeeid, od najniลพeg do najviลกeg ID-a.
- forEach(printjson) ispisuje svaki dokument u ฤitljivom JSON formatu.
Kada pokrenete ovu naredbu, dokumenti se prikazuju u rastuฤem redoslijedu Employeeid-a. Uzlazni redoslijed je takoฤer zadani smjer, pa ostavljanje vrijednosti kao 1 daje redoslijed od najniลพe prema najviลกoj vrijednosti u odabranom polju. Da biste obrnuli rezultat, jednostavno promijenite vrijednost s 1 na -1, a moลพete i ulanฤati limit() da biste vratili samo prvih nekoliko sortiranih zapisa.
MongoDB Skip() za paginaciju
Metoda skip() govori MongoDB ignorirati odreฤeni broj dokumenata prije vraฤanja ostatka. Sam po sebi, skip() rijetko je koristan, ali u kombinaciji s limit() stvara paginaciju, omoguฤujuฤi vam prikaz rezultata jednu po jednu stranicu.
Sljedeฤi primjer preskaฤe prva dva zaposlenika i vraฤa sljedeฤa dva:
db.Employee.find().skip(2).limit(2).forEach(printjson)
Za izradu navigacije stranica po stranica, slijedite ovaj obrazac:
- Odredite veliฤinu stranice, na primjer 2 dokumenta po stranici.
- Pomnoลพite veliฤinu stranice s brojem stranice minus jedan da biste dobili vrijednost preskakanja.
- Proslijedite tu vrijednost funkciji skip(), a veliฤinu stranice funkciji limit().
Na primjer, stranica 1 koristi skip(0).limit(2), stranica 2 koristi skip(2).limit(2), a stranica 3 koristi skip(4).limit(2). Uvijek dodajte i sort() kako bi redoslijed dokumenata ostao stabilan na svim stranicama. Imajte na umu da vrlo velike vrijednosti skip-a mogu biti spore na velikim kolekcijama, jer MongoDB i dalje skenira i odbacuje preskoฤene dokumente; paginacija temeljena na rasponu je brลพa u veฤem opsegu.
Sortiraj po viลกe polja u MongoDB
MongoDB moลพe sortirati po viลกe polja istovremeno. Polja u objektu sortiranja navodite po prioritetu i MongoDB sortira po prvom polju, zatim koristi sljedeฤe polje za prekid veza i tako dalje.
Sljedeฤi primjer sortira zaposlenike po imenu u uzlaznom redoslijedu, a za zaposlenike s istim imenom, po ID-u zaposlenika u silaznom redoslijedu:
db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)
Redoslijed kljuฤeva u objektu sortiranja je vaลพan: EmployeeName se primjenjuje prvi jer se prvi pojavljuje. Ovo sortiranje s viลกe kljuฤeva korisno je za izvjeลกฤa u kojima grupirate po jednom polju, a zatim rangirate unutar svake grupe. Za najbolje performanse na velikim kolekcijama, stvorite sloลพeni indeks koji odgovara poljima i smjerovima koriลกtenim u sortiranju.


