MongoDB Sort() & Limit() lekérdezés Példák szerinti sorrenddel
⚡ Okos összefoglaló
MongoDB A Sort() és Limit() lekérdezésmódosítók szabályozzák, hogy egy lekérdezés hány dokumentumot ad vissza, és milyen sorrendben. A limit() metódus korlátozza az eredmények számát, míg a sort() a dokumentumokat növekvő vagy csökkenő sorrendbe rendezi 1 vagy -1 értékek használatával.
Mi a lekérdezés módosítása?
MongoDB lekérdezésmódosítókat biztosít, például a 'limit' és 'Orders' záradékot, hogy nagyobb rugalmasságot biztosítson a lekérdezések végrehajtása során. A következő lekérdezésmódosítókat tekintjük át
MongoDB Lekérdezési eredmények korlátozása
Ez a módosító arra szolgál, hogy korlátozza a lekérdezés eredménykészletében visszaadott dokumentumok számát. A következő példa bemutatja, hogyan lehet ezt megtenni.
db.Employee.find().limit(2).forEach(printjson);
Code Magyarázat
- A fenti kód a kereső funkciót veszi át, amely a gyűjteményben lévő összes dokumentumot visszaadja, de a limitzáradékkal korlátozza a visszaküldendő dokumentumok számát 2-re.
teljesítmény
Ha a parancs sikeresen végrehajtásra került, a következő kimenet jelenik meg
A kimenet jól mutatja, hogy mivel van limit módosító, így legfeljebb 2 rekordot ad vissza az eredményhalmaz részeként az ObjectId alapján növekvő sorrendben.
MongoDB Rendezés Csökkenő sorrend szerint
Megadható a visszaküldendő dokumentumok sorrendje a gyűjtemény bármely kulcsának növekvő vagy csökkenő sorrendje alapján. A következő példa bemutatja, hogyan lehet ezt megtenni.
db.Employee.find().sort({Employeeid:-1}).forEach(printjson)
Code Magyarázat
- A fenti kód a rendezési függvényt veszi fel, amely a gyűjteményben lévő összes dokumentumot visszaadja, majd a módosító segítségével módosítja a rekordok visszaküldésének sorrendjét. Itt a -1 azt jelzi, hogy az alkalmazotti azonosító csökkenő sorrendje alapján szeretnénk visszaküldeni a bizonylatokat.
Ha a parancs sikeresen végrehajtásra került, a következő kimenet jelenik meg
teljesítmény
A kimenet jól láthatóan mutatja a visszaküldött dokumentumokat az Employeeid csökkenő sorrendjében.
A növekvő sorrendet az 1 érték határozza meg.
MongoDB Rendezés növekvő sorrend szerint
Ahogy a sort() függvény képes csökkenő sorrendben visszaadni a dokumentumokat, úgy növekvő sorrendben is. A növekvő sorrendet a rendezési objektum 1-es értéke határozza meg. Ez a legkisebb értéktől a legnagyobbig rendezi a dokumentumokat, ami hasznos a rekordok legrégebbitől a legújabbig, vagy A-tól Z-ig történő listázásához.
A következő példa minden alkalmazotti dokumentumot növekvő sorrendbe rendez az Alkalmazotti azonosító alapján:
db.Employee.find().sort({Employeeid:1}).forEach(printjson)
Így működik a lekérdezés:
- A find() függvény lekéri az Employee gyűjteményben található összes dokumentumot.
- A sort({Employeeid:1}) az eredményeket az Alkalmazotti azonosító mező alapján rendezi el, a legalacsonyabb azonosítótól a legmagasabbig.
- A forEach(printjson) minden dokumentumot olvasható JSON formátumban nyomtat ki.
A parancs futtatásakor a dokumentumok EmployeeID szerint növekvő sorrendben jelennek meg. A növekvő sorrend az alapértelmezett, tehát ha az értéket 1-en hagyjuk, akkor a kiválasztott mezőben a sorrend alacsonytól magasig terjed. Az eredmény megfordításához egyszerűen módosítsa az értéket 1-ről -1-re, és a limit() függvényt láncba is kötheti, hogy csak az első néhány rendezett rekordot adja vissza.
MongoDB Skip() a lapozáshoz
A skip() metódus megmondja MongoDB hogy egy adott számú dokumentumot figyelmen kívül hagyjon a többi visszaadása előtt. Önmagában a skip() ritkán hasznos, de a limit()-tel kombinálva oldalszámozást hoz létre, lehetővé téve az eredmények egyenkénti megjelenítését.
A következő példa kihagyja az első két alkalmazottat, és a következő kettőt adja vissza:
db.Employee.find().skip(2).limit(2).forEach(printjson)
Az oldalankénti navigáció létrehozásához kövesse ezt a mintát:
- Határozza meg az oldalméretet, például 2 dokumentum oldalanként.
- Szorozd meg az oldalméretet az oldalszám mínusz eggyel, hogy megkapd a kihagyási értéket.
- Add át ezt az értéket a skip()-nek, az oldalméretet pedig a limit()-nek.
Például az 1. oldal a skip(0).limit(2), a 2. oldal a skip(2).limit(2), a 3. oldal pedig a skip(4).limit(2) függvényt használja. Mindig adjunk hozzá egy sort() függvényt is, hogy a dokumentumok sorrendje stabil maradjon az oldalak között. Fontos megjegyezni, hogy a nagyon nagy skip értékek lassúak lehetnek nagy gyűjtemények esetén, mert MongoDB továbbra is beolvassa és elveti a kihagyott dokumentumokat; a tartományalapú oldalszámozás gyorsabban működik nagy léptékben.
Rendezés több mező szerint itt: MongoDB
MongoDB egyszerre több mező alapján is rendezhet. A rendezési objektumban lévő mezőket prioritási sorrendben sorolja fel, és MongoDB az első mező szerint rendez, majd a következő mező alapján döntetlent jelez, és így tovább.
A következő példa név szerint növekvő sorrendbe rendezi az alkalmazottakat, az azonos nevű alkalmazottak esetében pedig az Alkalmazotti azonosító szerint csökkenő sorrendbe:
db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)
A rendezési objektumban a kulcsok sorrendje számít: az EmployeeName kerül először alkalmazásra, mert az jelenik meg először. Ez a többkulcsos rendezés olyan jelentésekhez hasznos, ahol egy mező szerint csoportosítunk, majd az egyes csoportokon belül rangsorolunk. Nagy gyűjtemények esetén a legjobb teljesítmény érdekében hozz létre egy összetett indexet, amely megfelel a rendezésben használt mezőknek és irányoknak.



