MongoDB $Max operátor

Mongodb Max Operator



A MongoDB sok operátort talált ki speciális célú tranzakciók végrehajtására, mint például a rekordok frissítése, új rekord hozzáadása és a rekordok bizonyos feltételek melletti megjelenítése. Az egyik ilyen operátor a „$max” operátor, amely a rekord legnagyobb értékének ellenőrzésére szolgál. Ezen kívül használhatjuk a legkisebb érték frissítésére egy új legnagyobb értékkel, miután összehasonlítottuk őket az „update” függvény utasításban. A „$max” operátor másik felhasználási módja egy bizonyos gyűjtemény rekordjainak csoportosítása és megjelenítése oly módon, hogy csak a legnagyobb értéket jelenítse meg, miközben figyelmen kívül hagyja a legkisebb értéket, ha az adatbázisban ismétlődő rekordok vannak. Ebben az útmutatóban egyszerű lekérdezési példákat fogunk használni, hogy megvitassuk a „$max” operátor korábban említett használatát a MongoDB parancssori segédprogramban Windows platformunkon.

1. példa:

Kezdve az illusztrációval, hogy megvitassuk a „$max” operátor működését a MongoDB shellben, szükségünk van egy „data” nevű gyűjteményre, amelyet már létre kell hozni. A gyűjtemény létrehozásához közvetlenül hozzá kell adnunk néhány rekordot, anélkül, hogy bármilyen „létrehozási” utasítást használnánk. A beszúrási utasítás elegendő egy gyűjtemény létrehozásához és a benne lévő rekordok hozzáadásához. A lekérdezésben az „insertMany” függvényt használjuk négy rekord hozzáadásához, amelyek mindegyike 4 különböző típusú mezővel rendelkezik.

teszt > db.data.insertMany ( [ { 'azonosító' : egy , 'Név' : 'Bravó' , 'Fizetés' : 65000 , 'Kor' : 44 } ,
... { 'azonosító' : 2 , 'Név' : 'István' , 'Fizetés' : 77000 , 'Kor' : 55 } ,
... { 'azonosító' : 3 , 'Név' : 'Maria' , 'Fizetés' : 42000 , 'Kor' : 27 } ,
... { 'azonosító' : 4 , 'Név' : 'Hawkin' , 'Fizetés' : 58000 , 'Kor' : 33 } ] )







A beszúrási parancs sikeres, és a kimeneti üzenet azt mutatja, hogy a rekordok hozzáadásra kerültek.



Miután beszúrta a rekordokat a MongoDB „adat” gyűjteményébe, ideje látni ezeket a rekordokat a héjon. Így a „find()” függvény utasítást futtatjuk a MongoDB Cli-n, majd a „forEach()” függvényt, és a printjson argumentumot használva jelenítjük meg az eredményt JSON formátumban. A shellben megjelenő eredmény összesen 4 dokumentumot mutat a gyűjteményben, amelyek a következő kimeneti képen láthatók:



teszt > db.data.find ( ) .az egyes ( printjson )





Próbáljuk ki a „$max” operátort a MongoDB frissítési parancsában a már beszúrt rekordok módosításához. Így az updateOne() itt csak az „adat” gyűjtemény egyetlen rekordjának módosítására szolgál, például egy adott rekordhoz, ahol az „id” mező értéke „2”. A „$max” operátor az „adatgyűjtés” „Bérek” mezőjére kerül annak ellenőrzésére, hogy a „Bérek” mező értéke nagyobb-e 55000-nél. Ha nem, frissítse a rekordot 55000-rel. Ennek kimeneti eredménye. Az updateOne() függvénylekérdezés, amely „0” módosításszámot mutat, mint „2” rekord, kevesebb mint 55 000 fizetési értéke.

teszt > db.data.updateOne ( { azonosító: 2 } , { $max : { Fizetés: 55000 } } )



A frissítés után megpróbáljuk ugyanazt a „find()” függvény lekérdezést, hogy megjelenítsük a módosított eredményt a MongoDB parancssori shellben. De ugyanazt a kimenetet kapjuk, mint az „update” utasítás használata előtt. Nem történt változás, mert a 77000-es érték nagyobb, mint 55000.

teszt > db.data.find ( ) .az egyes ( printjson )

Próbáljuk meg még egyszer ugyanazt az updateOne() lekérdezést egy kis módosítással. Ezúttal a nagyobb „85000” értéket próbáljuk ki, mint a „77000” értéket, amely már az „adatgyűjtés” „Bérek” mezőjében található, hogy különbséget tegyünk a teljesítményünkön. A kimenet ezúttal az „1” módosításszámot mutatja, mivel a „85000” érték helyettesíti a mezőben már meglévő „77000” értéket, miután az összehasonlítás csak a „$max” operátor miatt történt ebben a lekérdezésben.

teszt > db.data.updateOne ( { azonosító: 2 } , { $max : { Fizetés: 85000 } } )

Miután sikeresen lecseréltük a kisebb „77000” értéket egy új „85000” értékre a MongoDB „$max” operátorán keresztül, végül a „find()” függvényt használjuk a „db” utasításban a frissítés ellenőrzésére. hogy sikeresen frissült-e vagy sem. A kimenet azt mutatja, hogy a gyűjtemény 2. rekordjának „Bérek” mezőjében lévő érték tökéletesen frissült.

teszt > db.data.find ( ) .az egyes ( printjson )

2. példa:

Ugorjunk egy másik példára a „$max” operátor használatához a MongoDB-ben. Ezúttal elhagytuk a „$max” operátort, hogy csoportosítsuk és megjelenítsük a gyűjtemény egyedi rekordjait, ha ugyanazon mezőértékek ismétlődnek. Ehhez beszúrunk még 2 rekordot egy „teszt” adatbázis „adat” gyűjteményébe. Ezek a rekordok 2 ugyanazt az értéket tartalmazzák a „Név” mezőben, amelyek a már beszúrt 4 rekordban is szerepelnek, a többi pedig eltérő. A rekordok beszúrásához ugyanazt a „db” utasítást használjuk, amely az „insertMany” függvényt tartalmazza az „adat” gyűjtemény frissítéséhez.

teszt > db.data.insertMany ( [ { 'azonosító' : 5 , 'Név' : 'Bravó' , 'Fizetés' : 35000 , 'Kor' : Négy öt } ,
{ 'azonosító' : 6 , 'Név' : 'Hawkin' , 'Fizetés' : 67000 , 'Kor' : 33 } ] )

Az utasítás sikeresen végrehajtódik.

Most, hogy a 2 új rekord hozzáadásra került, meg is jelenítheti őket ugyanazzal a „find” funkcióval a „db” utasításban, majd a „forEach” függvényben. A képen látható következő képernyőkimenet mutatja a 2 új rekordot a gyűjtemény végén:

teszt > db.data.find ( ) .az egyes ( printjson )

Az „adatgyűjtés” 6 rekordjának megjelenítése után készen állunk az összesítő funkció végrehajtására. Ezért az „összesítő” függvényt a következő felsorolt ​​lekérdezés használja. Ezzel a funkcióval a „$group” operátort használjuk egy „adat” gyűjtemény rekordjának csoportosítására az „id” és a „Fire” mező egyedi nevei szerint. A „$max” operátor kerül alkalmazásra a rekordok „Bérek” mezőjében, hogy a maximális értékeket jelenítse meg. Szerezze be a legnagyobb értéket a Fizetés mezőből a „Név” mezőben szereplő ismétlődő nevek alapján, amely „azonosítóként” használatos ehhez a csoportosításhoz. Összesen 4 rekord jelenik meg. A legkisebb érték (az ismétlődő rekordokból) figyelmen kívül marad, miközben a legnagyobb érték jelenik meg.

db.data.aggregate ( [ { $csoport : { _id: ' $Name ' , Fizetés: { $max : ' $ Fizetés ' } } } ] )

Következtetés

Az útmutató első bekezdése segít megérteni a MongoDB-ben használt operátorok fontosságát, különösen a „$max” operátort és annak használatát a MongoDB shellben. Ez az útmutató két parancsalapú példát tartalmaz, amelyek a „$max” operátorhoz kapcsolódnak, hogy demonstrálják annak célját. A MongoDB illusztrációkat végignézve néhány hasznos tranzakciót hajthat végre az adatbázisban, legyen szó egy már meglévő rekord új értékkel való cseréjéről, vagy a rekordok megjelenítéséről a „$max” operátoron keresztül történő csoportosítással.