MongoDB rendezési lekérdezés eredményei

Mongodb Rendezesi Lekerdezes Eredmenyei



Szinte minden adatbázisrendszer prioritást ad az adatok lekérése előtt az adatok rendezésének, ami megkülönbözteti őket a többi adattárolási módszertől. A MongoDB különféle módokat is kínál az adatok rendezésének meghatározására. Leginkább a sort() metódussal határozzuk meg a dokumentum megjelenési sorrendjét. A sorozat sorrendje paraméterként kerül átadásra a sort() metódusnak. A sort() metódust alkotó egy vagy több mezőt gyakran „1” vagy „-1” érték követi. A sort() metódus olvashatóbbá teszi a lekérdezést, ami javítja a megadott gyűjtemény megértését.

Hogyan rendezi a MongoDB a lekérdezések eredményeit?

A rendezési módszer a mezőt és a hozzá tartozó értéket egyetlen paraméterként veszi fel. A rendezési módszer JSON formátumú paramétereket fogad el, például {Mező: Érték}. A többszörös mezőket és értékeket a sort() metódusban is megadhatjuk, hogy a rendezett dokumentumokat a gyűjteményből kapjuk meg. Tekintsük a következő dokumentumot, amelyben sok más dokumentumot is beillesztünk adatbázisunkba. Ennek a MongoDB adatbázisnak a neve „Alkalmazottak”. Az „Alkalmazottak” gyűjtemény az alkalmazottakról lent látható összes információt tartalmazza.

db.Employees.insertMany([
{
'név': 'Róbert',
'DOB': '1993-05-14',
'Nem Férfi',
'e-mail': ' [e-mail védett] ',
'részleg': 'Biztonság',
'fizetés': 5000
},
{
'név': 'kyle',
'DOB': '1999-05-31',
'neme, nő',
'e-mail': ' [e-mail védett] ',
'részleg': 'IT',
'fizetés': 6200
},
{
'name': 'Máté',
'DOB': '1993-04-26',
'Nem Férfi',
'e-mail': ' [e-mail védett] ',
'részleg': 'Számlák',
'fizetés': 3500
},
{
'név': 'Kevin',
'DOB': '1991-07-14',
'Nem Férfi',
'e-mail': ' [e-mail védett] ',
'részleg': 'Biztonság',
'fizetés': 4500
},

{
'név': 'Júlia',
'DOB': '09-12-2000',
'neme, nő',
'e-mail': ' [e-mail védett] ',
'részleg': 'IT',
'fizetés': 2500
}
])

Az „Alkalmazott” gyűjtemény bekerül a megadott dokumentumokkal, amelyek megerősítése a következő kimenetben látható. Ezt a gyűjtődokumentumot fogjuk használni a rendezési lekérdezés eredményeinek funkcionalitásának bemutatására.









1. példa: MongoDB rendezetlen gyűjtemény

Amikor a keresési lekérdezést a find() metódussal hajtják végre, az mindig egy rendezetlen dokumentumgyűjteményt ad. Ez világosabb lehet az alábbi lekérdezési eredmények segítségével.



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

Itt van egy lekérdezésünk az „Employee” gyűjteményről a find() metódussal. A find() metódus az üres paramétert veszi az „_id:0”-val együtt. Az egyszerűbb eredmény érdekében a dokumentumazonosítót a „_id:0” operátor segítségével eltávolítjuk. Alapértelmezés szerint rendezetlen gyűjteményeket kapunk, amikor a lekérdezésben a find() metódussal keresünk. Az alábbiakban letöltött kimenet az összes rendezetlen dokumentum a beszúrás időpontjában rendelkezésünkre álló módon.





2. példa: A MongoDB lekérdezési eredmények rendezése növekvő sorrendben

A MongoDB rendezett gyűjteményét a sort() metódussal kapjuk meg, amelyet a find() metódus után kell elhelyezni. A MongoDB sort() metódusa a mező nevével és a dokumentum rendezési sorrendjével együtt szereplő paramétert veszi fel. A mezőbe paraméterként „1”-et kell beírnunk, mivel ebben a példában a dokumentumokat növekvő sorrendben fogjuk lekérni. A rendezési lekérdezésben a következők növekvő sorrendben jelennek meg.



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

Itt a sort() metódust használtuk a find keresési lekérdezés után. A sort() metódus a „name” mező növekvő sorrendbe rendezésére szolgál, mivel az „1” érték kerül a megadott mező mellé. Vegye figyelembe, hogy ha a sort() metódus nincs megadva paraméteres értékkel, akkor a gyűjtemény nem lesz rendezve. A sort() metódus kimenetét az alapértelmezett sorrendben kapjuk meg. A sort() metódus névmező szerinti eredményei növekvő sorrendben a következő MongoDB shellben jelennek meg.

3. példa: A MongoDB lekérdezési eredmények rendezése csökkenő sorrendben

Most a MongoDB rendezési lekérdezési eredményeit mutatjuk meg csökkenő sorrendben. Ez a fajta lekérdezés megegyezik a fenti példával, de van egy különbség. Csökkenő sorrend esetén a sort() metódus a „-1” értéket veszi fel az oszlopnév mellett. A rendezési lekérdezés eredménye csökkenő sorrendben az alábbiakban látható.

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

Itt a keresési lekérdezés a find() metódussal kezdődik, amely megtalálja az „email” mezőt, és csak az „email” mező értékeit adja vissza. Ezután megadtuk a sort() metódust, amely az „e-mail” mező rendezésére szolgál, és a mellette lévő „-1” érték azt jelzi, hogy a kapott rendezési eredmények csökkenő sorrendben lesznek. A csökkenő sorrendű rendezési lekérdezés eredményei a MongoDB shellben való végrehajtása után kerülnek lekérésre.

4. példa: MongoDB rendezési lekérdezési eredmények több mezőhöz

A MongoDB több mezőjét a sort() metódussal rendezhetjük. A rendezendő mezőket a sort() metódusban kell deklarálni. A rendezés a mezők deklarációs sorrendje alapján történik, és a rendezési sorrendet balról jobbra vizsgáljuk. A több mező rendezésére vonatkozó lekérdezésnek így kell kinéznie:

>db.Employees.find({},{_id:0}).sort({'név':1,'fizetés':1})

Itt a sort() metódus kerül átadásra a „név” és a „fizetés” mezőkkel, amelyeket rendezni kell. Az „Employee” gyűjtemény „name” mezője kerül először rendezésre, mivel ez a sort() metódus első argumentummezője. Ezután a sort() metódus rendezi a második „fizetés” argumentummezőt. Mindkét mező sorrendje „1”, ami azt jelzi, hogy a rendezés növekvő sorrendben történik. A rendezési lekérdezés több mezőjéhez tartozó kimenet az alább megadott rendezési sorrendben jön létre.

5. példa: MongoDB lekérdezési eredmények rendezése limit módszerrel

Ezenkívül a sort() metódus kombinálható a limit() metódussal is, amely megadja az adott keresési lekérdezés által rendezett dokumentumok korlátozott számát. A limit() metódus paraméterként egy egész számot igényel, ami korlátozza a kimeneti halmazban szerepeltetendő dokumentumok számát. Az alábbiakban be van állítva a keresési lekérdezés, amely először rendezi a dokumentumot, majd megadja a megadott limit dokumentumokat.

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

Itt van a keresési lekérdezés, amely elindítja a rendezési műveletet a „részleg” oszlopra, majd a „DOB” oszlopra növekvő sorrendben a sort() metódussal. Miután a rendezés befejeződött, mellé helyeztük a limit() metódust a korlátozott dokumentum lekéréséhez. A limit() metódus „4” számértéket kap, ami azt jelenti, hogy csak négy rendezett dokumentumot jelenít meg a kimeneten, ahogy az a következő képernyőn látható:

6. példa: MongoDB rendezési lekérdezési eredmények $sort aggregációval

A fenti példákban a rendezést a MongoDB sort() metódusával végeztük el. A MongoDB-ben van egy másik rendezési mód is, amely a $sort aggregáción keresztül valósul meg. A $sort operátor rendezi az összes bemeneti dokumentumot, majd visszaküldi a rendezett dokumentumokat a folyamatba. A $sort operátor az alábbi „Alkalmazottak” gyűjteményre vonatkozik.

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

Itt kihívtuk az összesítő metódust, amelyen belül használhatjuk a „$sort” operátort. Ezután megkapjuk a $sort operátor kifejezést, amely a „fizetés” oszlopot növekvő, az „id” oszlopot pedig csökkenő sorrendbe rendezi. A mezőre alkalmazott $sort összesítés a következő eredményeket adja:

6. példa: MongoDB lekérdezési eredmények rendezése kihagyási módszerrel

A sort() metódus a skip() metódussal is párosítható. Az eredményül kapott adatkészlet tartalmazhat bizonyos számú dokumentumot, amelyeket a skip() metódus figyelmen kívül hagy. A limit() metódushoz hasonlóan a skip() metódus is elfogadja a számértéket, amely az átugorandó dokumentumok számát jelzi. A sort() metódust a skip() metódussal kombináltuk a rendezési lekérdezésben.

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

Itt a skip() metódust használtuk a sort() metódus mellett. Amikor a sort() metódus rendezi a dokumentumokat, akkor átadja a rendezés kimenetét a sort() metódusnak. Ezt követően a skip() metódus eltávolította az első négy rendezett dokumentumot a gyűjteményből.

Következtetés

A cikk a MongoDB rendezési lekérdezés eredményeiről szól. Erre a célra a sort() metódust használtuk, amely meghatározott sorrendbe rendezi a rekordokat. A sort() módszert is alkalmaztuk több mezőben történő többszöri rendezéshez. A sort() metódus ezután párosul a limit() és skip() metódusokkal a rendezett dokumentumokhoz ezekkel a műveletekkel. Ezenkívül megadtuk a $sort aggregációt a MongoDB rendezési lekérdezési eredményeihez.