Výsledky triedenia dotazov MongoDB

Vysledky Triedenia Dotazov Mongodb



Takmer všetky databázové systémy uprednostňujú triedenie údajov pred ich získaním, čo ich odlišuje od iných metód ukladania údajov. MongoDB má tiež rôzne spôsoby, ako určiť spôsob triedenia údajov. Väčšinou používame metódu sort() na určenie poradia, v ktorom sa dokument zobrazuje. Poradie sekvencie sa odovzdá ako parameter metóde sort(). Po jednom alebo viacerých poliach, ktoré tvoria metódu sort(), často nasleduje buď hodnota „1“ alebo „-1“. Metóda sort() robí dotaz čitateľnejším, čo zlepšuje pochopenie špecifikovanej kolekcie.

Ako MongoDB triedi výsledky dotazov?

Metóda triedenia berie pole a jeho priradenú hodnotu ako jeden parameter. Metóda triedenia akceptuje parametre vo formáte JSON, ako napríklad {Field: Value}. Viaceré polia a hodnoty je možné zadať aj v metóde sort() na získanie zoradených dokumentov z kolekcie. Zoberme si nasledujúci dokument, v ktorom sme do našej databázy vložili mnoho ďalších dokumentov. Názov tejto databázy MongoDB je s názvom „Zamestnanci“. Zbierka „Zamestnanci“ obsahuje všetky nižšie uvedené informácie o zamestnancoch.

db.Employees.insertMany([
{
'name': 'Robert',
'DOB': '14-05-1993',
'Pohlavie Muž',
'e-mail': ' [e-mail chránený] ',
'department': 'Securtiy',
'plat': 5000
},
{
'name': 'kyle',
'DOB': '31-05-1999',
'pohlavie žena',
'e-mail': ' [e-mail chránený] ',
'oddelenie': 'IT',
'plat': 6200
},
{
'name': 'Matthew',
'DOB': '26-04-1993',
'Pohlavie Muž',
'e-mail': ' [e-mail chránený] ',
'department': 'Účty',
'plat': 3500
},
{
'name': 'Kevin',
'DOB': '14-07-1991',
'Pohlavie Muž',
'e-mail': ' [e-mail chránený] ',
'oddelenie': 'Bezpečnosť',
'plat' : 4500
},

{
'name': 'Julia',
'DOB': '09-12-2000',
'pohlavie žena',
'e-mail': ' [e-mail chránený] ',
'oddelenie': 'IT',
'plat': 2500
}
])

Kolekcia „Zamestnanec“ je vložená s poskytnutými dokladmi, ktorých potvrdenie je zobrazené v nasledujúcom výstupe. Tento zberný dokument použijeme na zobrazenie funkčnosti výsledkov dotazu na triedenie.









Príklad č. 1: Netriedená kolekcia MongoDB

Keď sa vyhľadávací dotaz vykoná pomocou metódy find(), vždy poskytne netriedenú kolekciu dokumentov. To môže byť jasnejšie s výsledkami dopytu uvedenými nižšie.



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

Tu máme dotaz kolekcie „Zamestnanec“ pomocou metódy find(). Metóda find() berie prázdny parameter spolu s „_id:0“. Pre jednoduchší výsledok sa ID dokumentu odstráni pomocou operátora „_id:0“. V predvolenom nastavení získavame netriedené kolekcie, keď sa dotaz hľadá pomocou metódy find(). Výstup získaný nižšie sú všetky nezoradené dokumenty spôsobom, ktorý máme v čase vloženia.





Príklad č. 2: Výsledky triedenia dotazu MongoDB vo vzostupnom poradí

Triedená kolekcia v MongoDB sa získava pomocou metódy sort(), ktorá by mala byť umiestnená za metódou find(). Metóda sort() v MongoDB preberá parameter, ktorý je súčasťou názvu poľa a poradia triedenia dokumentu. Do poľa musíme zadať „1“ ako parameter, pretože v tomto konkrétnom príklade budeme dokumenty získavať vo vzostupnom poradí. Nasledujúce výsledky v dotaze na triedenie sú vo vzostupnom poradí.



>db.Employees.find().sort({name:1})

Tu sme použili metódu sort() po vyhľadávacom dotaze find. Metóda sort() sa používa na zoradenie poľa „name“ vo vzostupnom poradí, pretože hodnota „1“ je umiestnená vedľa zadaného poľa. Všimnite si, že ak metóda sort() nie je špecifikovaná so žiadnou parametrickou hodnotou, kolekcia nebude triedená. Výstup z metódy sort() sa získa v predvolenom poradí. Výsledky metódy sort() podľa poľa názvu vo vzostupnom poradí sa zobrazia v nasledujúcom prostredí MongoDB.

Príklad č. 3: Výsledky triedenia dotazu MongoDB v zostupnom poradí

Teraz zobrazujeme výsledky dotazu na triedenie MongoDB v zostupnom poradí. Tento druh dotazu je rovnaký ako vyššie uvedený príklad, ale s jedným rozdielom. Pre zostupné poradie má metóda sort() hodnotu „-1“ oproti názvu stĺpca. Výsledky dotazu na triedenie v zostupnom poradí sú uvedené nižšie.

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

Tu vyhľadávací dotaz začína metódou find(), ktorá nájde pole „email“ a vráti iba hodnoty poľa „email“. Ďalej sme špecifikovali metódu sort(), ktorá sa používa na triedenie poľa „e-mail“ a hodnota „-1“ vedľa nej označuje, že získané výsledky triedenia budú v zostupnom poradí. Výsledky dotazu na triedenie v zostupnom poradí sa načítajú po jeho vykonaní v prostredí MongoDB.

Príklad č. 4: Výsledky triediaceho dotazu MongoDB pre viacero polí

Pomocou metódy sort() môžeme triediť viaceré polia v MongoDB. Polia, ktoré sa majú triediť, by mali byť deklarované v metóde sort(). Triedenie je založené na poradí deklarácií polí a poradie triedenia sa skúma zľava doprava. Dotaz na triedenie viacerých polí by mal vyzerať takto:

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

Tu sa metóda sort() odovzdáva s poľami „meno“ a „plat“, ktoré sa majú triediť. Pole „name“ z kolekcie „Employee“ sa zoradí ako prvé, pretože je to prvé pole argumentu metódy sort(). Potom metóda sort() triedi druhé pole argumentu „plat“. Poradie oboch polí je „1“, čo znamená, že triedenie bude vo vzostupnom poradí. Výstup pre viaceré polia dotazu na triedenie sa generuje v zadanom poradí triedenia nižšie.

Príklad č. 5: Triedenie výsledkov dotazu MongoDB s limitnou metódou

Okrem toho sa metóda sort() môže kombinovať aj s metódou limit(), ktorá poskytuje obmedzený počet zoradených dokumentov podľa daného vyhľadávacieho dopytu. Metóda limit() vyžaduje celé číslo ako parameter, ktorý obmedzuje počet dokumentov, ktoré by mali byť zahrnuté vo výstupnej množine. Nižšie je nastavený vyhľadávací dopyt, ktorý najprv zoradí dokument a potom poskytne špecifikované limitné dokumenty.

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

Tu máme vyhľadávací dotaz, ktorý začína operáciu triedenia pre stĺpec „oddelenie“ a potom pre stĺpec „DOB“ vo vzostupnom poradí pomocou metódy sort(). Po dokončení triedenia sme vedľa neho umiestnili metódu limit() na získanie obmedzeného dokumentu. Metóda limit() má číselnú hodnotu „4“, čo znamená, že na výstupe zobrazí iba štyri zoradené dokumenty, ako je znázornené na nasledujúcej obrazovke:

Príklad č. 6: Výsledky triedenia dotazu MongoDB s agregáciou $sort

Vo všetkých vyššie uvedených príkladoch sme triedenie vykonali pomocou metódy sort() MongoDB. Existuje ďalší spôsob triedenia v MongoDB, ktorý sa dosahuje prostredníctvom agregácie $ sort. Operátor $triediť zoradí všetky vstupné dokumenty, ktoré potom vráti zoradené dokumenty do kanála. Operátor $sort sa použije na kolekciu „Zamestnanci“ nižšie.

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

Tu sme vyvolali agregovanú metódu, v ktorej môžeme použiť operátor „$sort“. Potom máme operátorový výraz $ triediť, ktorý zoradí stĺpec „plat“ vo vzostupnom poradí a stĺpec „id“ v zostupnom poradí. Agregácia $triedenie použitá na pole poskytuje nasledujúce výsledky:

Príklad č. 6: Výsledky triedenia dotazov MongoDB pomocou metódy preskočenia

Metódu sort() je možné spárovať aj s metódou skip(). Výsledný súbor údajov môže mať určitý počet dokumentov, ktoré budú ignorované pomocou metódy skip(). Podobne ako metóda limit() aj metóda skip() akceptuje číselnú hodnotu, ktorá označuje počet dokumentov, ktoré sa majú preskočiť. V triediacom dotaze sme skombinovali metódu sort() s metódou skip().

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

Tu sme použili metódu skip() vedľa metódy sort(). Keď metóda sort() triedi dokumenty, odovzdáva výstup triedenia metóde sort(). Potom metóda skip() odstránila prvé štyri zoradené dokumenty z kolekcie.

Záver

Článok je o výsledkoch dotazu na triedenie v MongoDB. Na tento účel sme použili metódu sort(), ktorá organizuje záznamy v určenom poradí. Metódu sort() sme použili aj na viacnásobné triedenie v niekoľkých poliach. Metóda sort() sa potom spáruje s metódami limit() a skip() k zoradeným dokumentom pomocou týchto operácií Okrem toho sme poskytli agregáciu $sort pre výsledky dotazu na triedenie v MongoDB.