MongoDB Interogare Sort() & Limit() cu Order By Exemple
โก Rezumat inteligent
MongoDB Modificatorii de interogare Sort() ศi Limit() controleazฤ cรขte documente returneazฤ o interogare ศi รฎn ce ordine. Metoda limit() limiteazฤ numฤrul de rezultate, รฎn timp ce sort() aranjeazฤ documentele รฎn ordine crescฤtoare sau descrescฤtoare folosind valori de 1 sau -1.

Ce sunt modificฤrile interogฤrilor?
Mongo DB furnizeazฤ modificatori de interogare, cum ar fi clauza โlimitฤโ ศi โComenziโ pentru a oferi mai multฤ flexibilitate la executarea interogฤrilor. Vom arunca o privire la urmฤtorii modificatori de interogare
MongoDB Limitaศi rezultatele interogฤrii
Acest modificator este folosit pentru a limita numฤrul de documente care sunt returnate รฎn setul de rezultate pentru o interogare. Urmฤtorul exemplu aratฤ cum se poate face acest lucru.
db.Employee.find().limit(2).forEach(printjson);
Code Explicaศie
- Codul de mai sus preia funcศia de cฤutare care returneazฤ toate documentele din colecศie, dar apoi foloseศte clauza limitฤ pentru a limita numฤrul de documente returnate la doar 2.
producศie
Dacฤ comanda este executatฤ cu succes, va fi afiศatฤ urmฤtoarea ieศire
Rezultatul aratฤ clar cฤ, deoarece existฤ un modificator de limitฤ, deci sunt returnate cel mult 2 รฎnregistrฤri ca parte a setului de rezultate bazat pe ObjectId รฎn ordine crescฤtoare.
MongoDB Sortaศi dupฤ ordinea descendentฤ
Se poate specifica ordinea documentelor care urmeazฤ sฤ fie returnate pe baza ordinii crescฤtoare sau descrescฤtoare a oricฤrei chei din colecศie. Urmฤtorul exemplu aratฤ cum se poate face acest lucru.
db.Employee.find().sort({Employeeid:-1}).forEach(printjson)
Code Explicaศie
- Codul de mai sus preia funcศia de sortare care returneazฤ toate documentele din colecศie, dar apoi foloseศte modificatorul pentru a schimba ordinea รฎn care sunt returnate รฎnregistrฤrile. Aici -1 indicฤ faptul cฤ dorim sฤ returnฤm documentele pe baza ordinii descrescฤtoare a ID-ului de angajat.
Dacฤ comanda este executatฤ cu succes, va fi afiศatฤ urmฤtoarea ieศire
producศie
Rezultatul aratฤ clar documentele care sunt returnate รฎn ordinea descrescฤtoare a angajatului.
Ordinea crescฤtoare este definitฤ de valoarea 1.
MongoDB Sorteazฤ dupฤ ordine ascendentฤ
Aศa cum sort() poate returna documente รฎn ordine descrescฤtoare, le poate returna ศi รฎn ordine crescฤtoare. Ordinea crescฤtoare este definitฤ de valoarea 1 din obiectul de sortare. Aceasta aranjeazฤ documentele de la cea mai micฤ valoare la cea mai mare, ceea ce este util pentru listarea รฎnregistrฤrilor de la cea mai veche la cea mai nouฤ sau de la A la Z.
Urmฤtorul exemplu sorteazฤ fiecare document al angajatului dupฤ Employeeid รฎn ordine crescฤtoare:
db.Employee.find().sort({Employeeid:1}).forEach(printjson)
Iatฤ cum funcศioneazฤ interogarea:
- find() preia toate documentele din colecศia Employee.
- sort({Employeeid:1}) ordoneazฤ rezultatele dupฤ cรขmpul Employeeid, de la cel mai mic ID la cel mai mare.
- forEach(printjson) afiศeazฤ fiecare document รฎn JSON lizibil.
Cรขnd executaศi aceastฤ comandฤ, documentele apar รฎn ordine crescฤtoare a numฤrului de รฎnregistrฤri Employeeid. De asemenea, direcศia implicitฤ este ascendentฤ, aศadar, dacฤ lฤsaศi valoarea 1, cรขmpul ales va fi ordonat de la mic la mare. Pentru a inversa rezultatul, pur ศi simplu schimbaศi valoarea de la 1 la -1 ศi puteศi, de asemenea, sฤ folosiศi รฎn lanศ limit() pentru a returna doar primele cรขteva รฎnregistrฤri sortate.
MongoDB Skip() pentru paginare
Metoda skip() spune MongoDB sฤ ignore un anumit numฤr de documente รฎnainte de a le returna pe celelalte. Singurฤ, skip() este rareori utilฤ, dar combinatฤ cu limit() creeazฤ paginare, permiศรขndu-vฤ sฤ afiศaศi rezultatele pe paginฤ pe rรขnd.
Urmฤtorul exemplu omite primii doi angajaศi ศi returneazฤ urmฤtorii doi:
db.Employee.find().skip(2).limit(2).forEach(printjson)
Pentru a construi navigarea paginฤ cu paginฤ, urmaศi acest model:
- Decideศi dimensiunea paginii, de exemplu 2 documente pe paginฤ.
- รnmulศiศi dimensiunea paginii cu numฤrul paginii minus unu pentru a obศine valoarea de omitere.
- Transmiteศi acea valoare cฤtre skip() ศi dimensiunea paginii cฤtre limit().
De exemplu, pagina 1 foloseศte skip(0).limit(2), pagina 2 foloseศte skip(2).limit(2), iar pagina 3 foloseศte skip(4).limit(2). Adฤugaศi รฎntotdeauna ศi o funcศie sort(), astfel รฎncรขt ordinea documentelor sฤ rฤmรขnฤ stabilฤ pe pagini. Reศineศi cฤ valorile foarte mari de omitere pot fi lente รฎn cazul colecศiilor mari, deoarece MongoDB scaneazฤ ศi eliminฤ รฎn continuare documentele omise; paginarea bazatฤ pe intervale este mai rapidฤ la scarฤ largฤ.
Sortare dupฤ mai multe cรขmpuri รฎn MongoDB
MongoDB se poate sorta dupฤ mai multe cรขmpuri simultan. Enumeraศi cรขmpurile din obiectul de sortare รฎn ordinea prioritฤศii ศi MongoDB sorteazฤ dupฤ primul cรขmp, apoi foloseศte urmฤtorul cรขmp pentru a rupe legฤturile ศi aศa mai departe.
Urmฤtorul exemplu sorteazฤ angajaศii dupฤ nume รฎn ordine crescฤtoare, iar pentru angajaศii cu acelaศi nume, dupฤ ID angajat รฎn ordine descrescฤtoare:
db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)
Ordinea cheilor din obiectul de sortare conteazฤ: EmployeeName se aplicฤ prima deoarece apare prima. Aceastฤ sortare cu chei multiple este utilฤ pentru rapoartele รฎn care grupaศi dupฤ un cรขmp ศi apoi le clasificaศi รฎn cadrul fiecฤrui grup. Pentru cele mai bune performanศe รฎn colecศiile mari, creaศi un index compus care sฤ corespundฤ cรขmpurilor ศi direcศiilor utilizate รฎn sortare.


