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.

  • ๐Ÿ”ข Limitaศ›i rezultatele: Metoda limit() restricศ›ioneazฤƒ numฤƒrul de documente returnate de o interogare, de exemplu limit(2) returneazฤƒ douฤƒ รฎnregistrฤƒri.
  • โฌ‡๏ธ Sortare descrescฤƒtoare: sort({field:-1}) returneazฤƒ documentele รฎn ordinea descrescฤƒtoare a cรขmpului ales.
  • โฌ†๏ธ Sortare crescฤƒtoare: sort({field:1}) returneazฤƒ documentele รฎn ordine crescฤƒtoare, care este ศ™i direcศ›ia implicitฤƒ.
  • โญ๏ธ Sari peste paginare: Metoda skip() ignorฤƒ o serie de documente ศ™i, combinatฤƒ cu limit(), construieศ™te paginarea.
  • ๐Ÿงท Taste multiple: sort() acceptฤƒ mai multe cรขmpuri, sortรขnd dupฤƒ prima cheie ศ™i rupรขnd legฤƒturile cu urmฤƒtoarea.
  • ๐Ÿ–จ๏ธ Readable ieศ™ire: รŽnlฤƒnศ›uirea forEach(printjson) tipฤƒreศ™te fiecare document returnat รฎn format JSON curat.

MongoDB Interogare Sort() ศ™i Limit()

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

MongoDB Limitaศ›i rezultatele interogฤƒrii

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

MongoDB Sortaศ›i dupฤƒ ordinea descendentฤƒ

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:

  1. Decideศ›i dimensiunea paginii, de exemplu 2 documente pe paginฤƒ.
  2. รŽnmulศ›iศ›i dimensiunea paginii cu numฤƒrul paginii minus unu pentru a obศ›ine valoarea de omitere.
  3. 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.

รŽntrebฤƒri frecvente

Fฤƒrฤƒ sort(), MongoDB returneazฤƒ documentele รฎn ordine naturalฤƒ, care de obicei reflectฤƒ ordinea lor pe disc ศ™i nu este garantatฤƒ. Pentru o ordine previzibilฤƒ, adฤƒugaศ›i รฎntotdeauna o funcศ›ie sort() explicitฤƒ pe un cรขmp precum _id.

Logic, MongoDB aplicฤƒ รฎntotdeauna sort() รฎnainte de limit(), indiferent de ordinea รฎn care le รฎnlฤƒnศ›uieศ™ti. Aceasta รฎnseamnฤƒ cฤƒ limit() returneazฤƒ documentele de top ale rezultatului sortat, nu un subset aleatoriu care este apoi sortat.

Sortarea seturilor mari de rezultate fฤƒrฤƒ index forศ›eazฤƒ o sortare รฎn memorie, care eศ™ueazฤƒ odatฤƒ ce depฤƒศ™eศ™te limita de memorie. Crearea unui index pe cรขmpul de sortare permite MongoDB returneazฤƒ eficient rezultatele ordonate.

Inteligenศ›a artificialฤƒ poate transforma o cerere simplฤƒ, cum ar fi โ€žcei mai noi cinci angajaศ›iโ€, รฎntr-o interogare find().sort().limit() cu direcศ›ia ศ™i numฤƒrul corecte. De asemenea, explicฤƒ fiecare modificator, astfel รฎncรขt รฎncepฤƒtorii sฤƒ รฎnveศ›e modelul.

Da. Inteligenศ›a artificialฤƒ poate inspecta un plan de interogare, detecta sortฤƒrile รฎn memorie ศ™i poate recomanda indexul necesar pentru a accepta sortarea. Acest lucru ajutฤƒ dezvoltatorii sฤƒ accelereze sortarea ศ™i sฤƒ limiteze interogฤƒrile pe colecศ›ii mari.

Rezumaศ›i aceastฤƒ postare cu: