Operátor MongoDB $ Max

Operator Mongodb Max



MongoDB prišiel s mnohými operátormi na vykonávanie špeciálnych transakcií, ako je aktualizácia záznamov, pridanie nového záznamu a zobrazenie záznamov za určitých podmienok. Jedným z týchto operátorov je operátor „$max“, ktorý sa používa na kontrolu najväčšej hodnoty v zázname. Okrem toho ho môžeme použiť na aktualizáciu najmenšej hodnoty novou najväčšou hodnotou po ich porovnaní v inštrukcii funkcie „aktualizácia“. Ďalším použitím operátora „$max“ je zoskupenie a zobrazenie záznamov určitej kolekcie tak, že dokáže zobraziť iba najväčšiu hodnotu, pričom najmenšiu hodnotu ignoruje, ak sú v databáze nejaké duplicitné záznamy. V tejto príručke použijeme jednoduché príklady dotazov na diskusiu o vyššie spomenutom použití operátora „$max“ v nástroji príkazového riadka MongoDB na našej platforme Windows.

Príklad 1:

Počnúc ilustráciou na diskusiu a tým, ako funguje operátor „$max“ v prostredí MongoDB, musíme mať kolekciu s názvom „údaje“, ktorá už musí byť vytvorená. Aby sme vytvorili túto kolekciu, musíme do nej pridať nejaké záznamy priamo bez použitia akéhokoľvek príkazu „vytvoriť“. Inštrukcia vloženia postačuje na vytvorenie kolekcie a pridanie záznamov do nej. V dotaze používame funkciu „insertMany“ na pridanie štyroch záznamov, z ktorých každý má 4 polia rôznych typov.

test > db.data.insertMany ( [ { 'id' : jeden , 'Názov' : 'Bravo' , 'plat' : 65 000 , 'Vek' : 44 } ,
... { 'id' : 2 , 'Názov' : 'Stephen' , 'plat' : 77 000 , 'Vek' : 55 } ,
... { 'id' : 3 , 'Názov' : 'Maria' , 'plat' : 42 000 , 'Vek' : 27 } ,
... { 'id' : 4 , 'Názov' : 'Hawkin' , 'plat' : 58 000 , 'Vek' : 33 } ] )







Príkaz insert je úspešný a výstupná správa ukazuje, že záznamy sú pridané.



Po vložení záznamov do zbierky „údajov“ našej MongoDB je čas vidieť tieto záznamy na shell. Spustíme teda inštrukciu funkcie „find()“ na MongoDB Cli, po ktorej nasleduje funkcia „forEach()“, pričom použijeme argument printjson na zobrazenie výsledku vo formáte JSON. Výsledok, ktorý sa zobrazí v shelli, zobrazuje celkovo 4 dokumenty v kolekcii, ktoré sú zobrazené na nasledujúcom výstupnom obrázku:



test > db.data.find ( ) .pre každý ( printjson )





Vyskúšajme operátora „$max“ v príkaze aktualizácie MongoDB na úpravu už vložených záznamov. UpdateOne() sa tu teda používa iba na úpravu jedného záznamu zberu „údajov“, ako je špecifický záznam, kde má pole „id“ hodnotu „2“. Operátor „$max“ sa použije na pole „Plat“ zberu údajov, aby sa skontrolovalo, či má pole „Mzda“ hodnotu väčšiu ako 55 000. Ak nie, aktualizujte záznam na 55 000. Dotaz funkcie updateOne(), ktorý zobrazuje počet úprav „0“, pretože záznam „2“ má hodnotu platu nižšiu ako 55 000.

test > db.data.updateOne ( { id: 2 } , { max : { plat: 55 000 } } )



Po tejto aktualizácii vyskúšame rovnaký dotaz funkcie „nájsť ()“ na zobrazenie upraveného výsledku v prostredí príkazového riadka MongoDB. Dostaneme však rovnaký výstup, aký sme dostali pred použitím inštrukcie „aktualizovať“. Nenastala žiadna zmena, pretože hodnota 77 000 je väčšia ako 55 000.

test > db.data.find ( ) .pre každý ( printjson )

Skúsme ešte raz ten istý dotaz updateOne() s malou úpravou. Tentoraz vyskúšame vyššiu hodnotu, ktorá je „85 000“ ako hodnotu „77 000“, ktorá sa už nachádza v poli „Plat“ zberu „údajov“, aby sme zmenili náš výstup. Výstup zobrazuje počet modifikácií „1“ tentoraz, pretože hodnota „85000“ nahradí už existujúcu hodnotu „77000“ v poli po porovnaní, ktoré sa uskutočnilo len kvôli operátoru „$max“ v tomto dotaze.

test > db.data.updateOne ( { id: 2 } , { max : { plat: 85 000 } } )

Po úspešnom nahradení menšej hodnoty „77000“ novou hodnotou „85000“ prostredníctvom operátora „$max“ MongoDB, nakoniec použijeme funkciu „find()“ v inštrukcii „db“ na kontrolu tejto aktualizácie, či je úspešne aktualizovaný alebo nie. Výstup ukazuje, že hodnota v poli „Plat“ 2. záznamu v tejto kolekcii je dokonale aktualizovaná.

test > db.data.find ( ) .pre každý ( printjson )

Príklad 2:

Prejdime k ďalšiemu príkladu použitia operátora „$max“ v MongoDB. Tentoraz sme zrušili operátor „$max“, aby sme zoskupili a zobrazili jedinečné záznamy kolekcie, ak existujú nejaké duplikáty pre rovnaké hodnoty polí. Na tento účel vložíme 2 ďalšie záznamy do zbierky „údajov“ „testovacej“ databázy. Tieto záznamy obsahujú 2 rovnaké hodnoty v poli „Názov“, ktoré sú aj v už vložených 4 záznamoch a ostatné sú odlišné. Na vkladanie záznamov používame rovnakú inštrukciu „db“, ktorá obsahuje funkciu „insertMany“, aby sa kolekcia „data“ aktualizovala.

test > db.data.insertMany ( [ { 'id' : 5 , 'Názov' : 'Bravo' , 'plat' : 35 000 , 'Vek' : Štyri, päť } ,
{ 'id' : 6 , 'Názov' : 'Hawkin' , 'plat' : 67 000 , 'Vek' : 33 } ] )

Inštrukcia je úspešne vykonaná.

Teraz, keď sú pridané 2 nové záznamy, môžete ich tiež zobraziť pomocou rovnakej funkcie „nájsť“ v inštrukcii „db“, po ktorej nasleduje funkcia „forEach“. Nasledujúci výstup zobrazenia na obrázku zobrazuje 2 nové záznamy na konci tejto kolekcie:

test > db.data.find ( ) .pre každý ( printjson )

Po zobrazení 6 záznamov zberu „údajov“ sme pripravení na nich vykonať agregovanú funkciu. Preto sa v nasledujúcom uvedenom dotaze používa funkcia „agregácia“. Pri tejto funkcii využívame operátor “$group” na zoskupenie záznamu kolekcie “údajov” podľa jedinečných názvov polí “id” a “Plat”. Operátor „$max“ sa použije v poli „Plat“ v záznamoch, aby sa zobrazili maximálne hodnoty. Získajte najvyššiu hodnotu z poľa Plat“ podľa duplicitných mien v poli „Názov“, ktoré sa používa ako „id“ pre zobrazenie tohto zoskupenia. Celkovo sú zobrazené 4 záznamy. Najmenšia hodnota (z duplicitných záznamov) sa ignoruje, zatiaľ čo sa zobrazuje najväčšia hodnota.

db.data.aggregate ( [ { $skupina : { _id: ' $Name ' , plat: { max : ' $Plat ' } } } ] )

Záver

Prvý odsek tejto príručky vám pomôže pochopiť dôležitosť operátorov, ktoré sa používajú v MongoDB, najmä operátor „$max“ a jeho použitie v prostredí MongoDB. Táto príručka obsahuje dva príklady založené na príkazoch, ktoré súvisia s operátorom „$max“, aby demonštrovali jeho účel. Prechádzaním ilustrácií MongoDB budete môcť v databáze vykonávať niektoré užitočné transakcie, či už ide o nahradenie už existujúceho záznamu novou hodnotou alebo zobrazenie záznamov ich zoskupením cez operátor „$max“.