Operátor MongoDB $Max

Operator Mongodb Max



MongoDB přišel s mnoha operátory, kteří prováděli speciální transakce, jako je aktualizace záznamů, přidání nového záznamu a zobrazení záznamů za určitých podmínek. Jedním z těchto operátorů je operátor „$max“, který se používá ke kontrole nejvyšší hodnoty v záznamu. Kromě toho jej můžeme použít k aktualizaci nejmenší hodnoty novou největší hodnotou po jejich porovnání v instrukci funkce „update“. Dalším použitím operátoru „$max“ je seskupení a zobrazení záznamů určité kolekce tak, že může zobrazit pouze největší hodnotu a ignorovat nejmenší hodnotu, pokud jsou v databázi nějaké duplicitní záznamy. V této příručce použijeme jednoduché příklady dotazů k diskuzi o dříve zmíněných použitích operátoru „$max“ v nástroji příkazového řádku MongoDB na naší platformě Windows.

Příklad 1:

Počínaje ilustrací k diskusi a tím, jak funguje operátor „$max“ v prostředí MongoDB, potřebujeme mít kolekci s názvem „data“, která již musí být vytvořena. Abychom vytvořili tuto kolekci, musíme do ní přidat některé záznamy přímo bez použití jakéhokoli příkazu „vytvořit“. Instrukce vložení stačí k vytvoření kolekce a přidání záznamů do ní. Pomocí funkce „insertMany“ v dotazu přidáme čtyři záznamy, z nichž každý má 4 pole různých typů.

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







Příkaz insert je úspěšný a výstupní zpráva ukazuje, že záznamy byly přidány.



Po vložení záznamů do kolekce „data“ našeho MongoDB je čas vidět tyto záznamy v shellu. Spustíme tedy instrukci funkce „find()“ na MongoDB Cli následovanou funkcí „forEach()“, přičemž použijeme argument printjson k zobrazení výsledku ve formátu JSON. Výsledek, který se zobrazí v shellu, ukazuje celkem 4 dokumenty v kolekci, které jsou zobrazeny na následujícím výstupním obrázku:



test > db.data.find ( ) .pro každého ( printjson )





Vyzkoušejte operátor „$max“ v příkazu aktualizace MongoDB, abyste upravili již vložené záznamy. UpdateOne() se zde tedy používá pouze k úpravě jediného záznamu kolekce „dat“, jako je konkrétní záznam, kde pole „id“ má hodnotu „2“. Operátor „$max“ se použije na pole „Plat“ v kolekci „data“, aby se zkontrolovalo, zda pole „Plat“ má hodnotu větší než 55 000. Pokud ne, aktualizujte záznam na 55 000. Výsledek výstupu pro toto Dotaz funkce updateOne(), který ukazuje počet úprav „0“, protože záznam „2“ má hodnotu platu menší než 55 000.

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



Po této aktualizaci zkoušíme stejný dotaz funkce „find()“ k zobrazení upraveného výsledku v prostředí příkazového řádku MongoDB. Ale dostaneme stejný výstup, jaký jsme dostali před použitím instrukce „update“. Nedošlo k žádné změně, protože hodnota 77000 je větší než 55000.

test > db.data.find ( ) .pro každého ( printjson )

Vyzkoušíme stejný dotaz updateOne() ještě jednou s malou úpravou. Tentokrát zkoušíme vyšší hodnotu, která je „85 000“, než hodnotu „77 000“, která se již nachází v poli „Plat“ sběru „dat“, abychom změnili náš výstup. Výstup ukazuje počet úprav „1“ tentokrát, protože hodnota „85000“ nahradí již existující hodnotu „77000“ v poli poté, co k porovnání došlo právě kvůli operátoru „$max“ v tomto dotazu.

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

Po úspěšném nahrazení menší hodnoty „77000“ novou hodnotou „85000“ prostřednictvím operátora „$max“ MongoDB nakonec používáme funkci „find()“ v instrukci „db“ ke kontrole této aktualizace, zda je úspěšně aktualizován nebo ne. Výstup ukazuje, že hodnota v poli „Plat“ 2. záznamu v této kolekci je dokonale aktualizována.

test > db.data.find ( ) .pro každého ( printjson )

Příklad 2:

Přejděme k dalšímu příkladu použití operátoru „$max“ v MongoDB. Tentokrát jsme zrušili operátor „$max“, abychom seskupili a zobrazili jedinečné záznamy kolekce, pokud existují nějaké duplikáty pro stejné hodnoty pole. Za tímto účelem vložíme 2 další záznamy do kolekce „data“ „testovací“ databáze. Tyto záznamy obsahují v poli „Jméno“ 2 stejné hodnoty, které jsou také v již vložených 4 záznamech a ostatní jsou odlišné. Pro vkládání záznamů používáme stejnou instrukci „db“, která obsahuje funkci „insertMany“ pro aktualizaci kolekce „data“.

test > db.data.insertMany ( [ { 'id' : 5 , 'Název' : 'Bravo' , 'plat' : 35 000 , 'Stáří' : Čtyři pět } ,
{ 'id' : 6 , 'Název' : 'Hawkin' , 'plat' : 67 000 , 'Stáří' : 33 } ] )

Instrukce je úspěšně provedena.

Nyní, když jsou přidány 2 nové záznamy, můžete je také zobrazit pomocí stejné funkce „najít“ v instrukci „db“ následované funkcí „forEach“. Následující výstup na obrázku ukazuje 2 nové záznamy na konci této kolekce:

test > db.data.find ( ) .pro každého ( printjson )

Po zobrazení 6 záznamů sběru „dat“ jsme připraveni na něm provést agregační funkci. Proto je v následujícím dotazu použita funkce „agregace“. Pomocí této funkce využíváme operátor „$group“ k seskupení záznamu kolekce „data“ podle jedinečných názvů polí „id“ a „Mzd“. Operátor „$max“ se použije na pole „Plat“ v záznamech, aby se zobrazily maximální hodnoty. Získejte nejvyšší hodnotu z pole Plat“ podle duplicitních jmen v poli „Jméno“, které se používá jako „id“ pro zobrazení tohoto seskupení. Jsou zobrazeny celkem 4 záznamy. Nejmenší hodnota (z duplicitních záznamů) je ignorována, zatímco je zobrazena největší hodnota.

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

Závěr

První odstavec této příručky vám pomůže pochopit důležitost operátorů, které se používají v MongoDB, zejména operátor „$max“ a jeho použití v prostředí MongoDB. Tato příručka obsahuje dva příklady založené na příkazech, které souvisejí s operátorem „$max“, aby demonstrovaly jeho účel. Procházením ilustrací MongoDB budete moci provádět některé užitečné transakce v databázi, ať už jde o nahrazení již existujícího záznamu novou hodnotou nebo zobrazení záznamů jejich seskupením pomocí operátoru „$max“.