Operátor MongoDB $Min

Operator Mongodb Min



Ak nie ste novým používateľom databáz alebo programovania, určite ste vyskúšali programy a dotazy, ktoré využívajú operátory porovnávania – väčšie ako, menšie ako, rovné atď. V MongoDB, kde používame operátor „$set“ na aktualizovať konkrétny záznam poľa alebo pridať nový záznam do databázy, rovnaký výsledok môžeme dosiahnuť aj pomocou porovnávacích operátorov ako „$min“ a „$max“. V MongoDB možno operátor „$min“ použiť v rámci mnohých funkčných dotazov na aktualizáciu konkrétneho poľa, keď je nová hodnota menšia ako už vložená hodnota. Môže sa tiež použiť na zoskupenie a zobrazenie záznamov zbierky v určitom poradí. Táto príručka vám pomôže s rôznymi spôsobmi, ako odmietnuť operátora „$min“ v MongoDB.

Príklad 1:

Počnúc prvou ilustráciou demonštrujeme použitie operátora „$min“ v MongoDB na aktualizáciu už vloženého záznamu pomocou nástroja shell MongoDB v systéme Windows. Preto musíte mať nejaké záznamy, ktoré sú už pridané do vašej databázy. Takže používame dotaz funkcie insertMany() na pridanie celkom 5 záznamov do kolekcie „objednávky“ „testovacej“ databázy. Každý z vložených záznamov, ktoré sú zobrazené na nasledujúcom obrázku, obsahuje celkom 4 polia – id, názov, predajná cena a daň. Tieto 5-záznamové údaje sú úspešne vložené podľa priloženého výstupu:

test > db.order.insertMany ( [ { 'id' :01, 'titul' : 'mydlo' , 'Zľavnená cena' : 500 , 'daň' : 24 } ,
... { 'id' :02, 'titul' : 'šampón' , 'Zľavnená cena' : 700 , 'daň' : 27 } ,
... { 'id' :03, 'titul' : 'detergent' , 'Zľavnená cena' : 400 , 'daň' : 22 } ,
... { 'id' :04, 'titul' : 'parfum' , 'Zľavnená cena' : 900 , 'daň' : 30 } ,
... { 'id' :05, 'titul' : 'hmla' , 'Zľavnená cena' : 850 , 'daň' : 27 } ] )







Je čas pozrieť sa na vložený záznam v „testovacej“ databáze. Na to musíte vypnúť metódu „find()“ spolu s metódou „forEach“, pričom v inštrukcii „db“ použijete argument „printjson“. Pomocou kolekcie s názvom „objednávka“ máme na obrazovke zobrazený záznam.



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



Je najvyšší čas použiť operátor „$min“ v dotaze funkcie „updateOne“ na aktualizáciu jedného záznamu z kolekcie „order“, ktorá bola práve vytvorená. Pole „id“ sa používa ako jedinečný identifikátor na aktualizáciu konkrétneho záznamu z databázy, zatiaľ čo operátor „$min“ sa použije na pole „SalePrice“ na aktualizáciu jeho hodnoty na 600, ak je menšia ako už vložená hodnota. Výstupná správa ukazuje, že dotaz je úspešný, ale nevykonávajú sa žiadne aktualizácie.





test > db.order.updateOne ( { id: 3 } , { $ min : { Zľavnená cena: 600 } } )

Dôvod, prečo sa neaktualizuje pole „SalePrice“ 3. záznamu je, že obsahuje hodnotu „400“, čo je menej ako „600“. Preto operátor „$min“ neaktualizuje minimálnu hodnotu „400“ väčšou hodnotou „600“ podľa nasledujúceho priloženého dotazu find():



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

Urobme malú zmenu v aktualizačnom dotaze, aby sme tentoraz získali iný výstup. Používame rovnakú inštrukciu „db“, ktorá v nej využíva funkciu „updateOne“ na úpravu jedného záznamu „3“. Operátor „$min“ sa použije na pole „SalePrice“ a nastaví jeho hodnotu na „300“, ak je hodnota „300“ menšia ako už zadaná hodnota. Vieme, že už vložená hodnota „400“ v poli SalePrice je väčšia ako nová hodnota „300“, ktorá sa má porovnávať. Tentoraz teda nahrádza „400“ za „300“. Výstupná správa ukazuje úspešné vykonanie tohto dotazu. Upravený počet = 1 znamená, že je upravený 1 záznam.

test > db.order.updateOne ( { id: 3 } , { $ min : { Zľavnená cena: 300 } } )

Po zobrazení záznamov kolekcie “objednávky” z “testovacej” databázy vo formáte JSON pomocou inštrukcie funkcie “find()” v shell MongoDB sme zistili, že 3. záznam je úspešne aktualizovaný. Hodnota 400 v poli „SalePrice“ sa nahradí hodnotou 300.

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

Príklad 2:

V rámci tejto ilustrácie MongoDB získavame záznamy konkrétnej databázy tak, že ich zoskupujeme podľa operátora „$min“ podľa minimálnej hodnoty v záznamoch. Predpokladajme, že máte rovnakých 5 záznamov v zbierke „objednávok“ v „testovacej“ databáze MongoDB a potrebujete mať nejaké duplicitné údaje v konkrétnych poliach „testovacej“ databázy. Na tento účel pridávame ďalšie záznamy do zbierky „objednávky“ databázy „test“. Tentoraz vložíme duplicitné hodnoty do poľa „Názov“. Používa sa v klauzule „$group“ na vytvorenie skupiny jedinečných hodnôt. Nasledujúci výstup zobrazuje novo vložené ďalšie 3 záznamy pre „testovaciu“ databázu. Teraz má kolekcia „objednávka“ duplicitné hodnoty pre pole „Názov“ v porovnaní s 5 starými záznamami. Zvyšok používa to isté.

Po celkovom počte 8 záznamov v kolekcii „objednávok“ v „testovacej“ databáze je čas otestovať $min operátora MongoDB po jeho aplikácii na konkrétne pole, ktoré je zoskupené podľa iného poľa. O tom je pripojený agregovaný príkaz. Začína kľúčovým slovom „db“, za ktorým nasleduje názov kolekcie v konkrétnej databáze a funkcia agregácie (). Agregačná funkcia sa začína použitím klauzuly $ group MongoDB, ktorá sa tu používa najmä na zobrazenie údajov v skupine týkajúcej sa poľa „Titul“ databázy „test“, kde sa pole „Title“ považuje za jedinečný kľúč. .

Zároveň sa samostatne inicializuje pole s cenou, ktoré z celkového počtu 8 rovnakých záznamov preberá iba záznam s minimálnou hodnotou prostredníctvom operátora „$min“, ktorý je naň aplikovaný. Výstup tohto vykonania dotazu zobrazuje zobrazenie 5 záznamov s malou aktualizáciou v sekcii ceny. Môžete vidieť, že sa nezobrazujú žiadne opakujúce sa záznamy. Tu sú zobrazené niektoré jedinečné záznamy a záznamy s najmenšou hodnotou.

test > db.order.aggregate ( [ { $skupina : { _id: ' $Title ' , cena: { $ min : ' $SalePrice ' } } } ] )

Záver

Táto príručka je zbierkou ilustrácií MongoDB na zobrazenie jednoduchého spôsobu použitia operátora „$min“. Úvodný odsek sa používa na diskusiu o účele jeho použitia v MongoDB. Prvá časť tohto článku pojednáva o tom, ako funguje a nefunguje operátor „$min“ pre jeden záznam v databáze, t. j. aktualizovať alebo vložiť záznam ako minimálnu hodnotu. Posledné príklady tiež demonštrujú jeho použitie na zoskupenie záznamu kolekcie ako jedinečného v celej databáze.