Operátor MongoDB $Min

Operator Mongodb Min



Pokud nejste novým uživatelem databází nebo programování, určitě jste vyzkoušeli programy a dotazy, které využívají operátory porovnání – větší než, menší než, rovno atd. V MongoDB, kde používáme operátor „$set“ k aktualizovat konkrétní záznam pole nebo přidat nový záznam do databáze, stejného výsledku můžeme dosáhnout také pomocí porovnávacích operátorů jako „$min“ a „$max“. V MongoDB lze operátor „$min“ použít v mnoha funkčních dotazech k aktualizaci konkrétního pole, když je nová hodnota menší než již vložená hodnota. Může být také použit k seskupení a zobrazení záznamů sbírky v určitém pořadí. Tato příručka vám pomůže s různými způsoby, jak odhodit operátor „$min“ v MongoDB.

Příklad 1:

Počínaje první ilustrací demonstrujeme použití operátoru „$min“ v MongoDB k aktualizaci již vloženého záznamu pomocí nástroje Shell MongoDB v systému Windows. Proto musíte mít nějaké záznamy, které jsou již přidány do vaší databáze. Použijeme tedy dotaz funkce insertMany() k přidání celkem 5 záznamů do kolekce „objednávka“ „testovací“ databáze. Každý z vložených záznamů, které jsou znázorněny na následujícím obrázku, obsahuje celkem 4 pole – id, titul, prodejní cena a daň. Tato data o 5 záznamech byla úspěšně vložena podle připojeného výstupu:

test > db.order.insertMany ( [ { 'id' :01, 'Titul' : 'Mýdlo' , 'Prodejní cena' : 500 , 'Daň' : 24 } ,
... { 'id' :02, 'Titul' : 'šampon' , 'Prodejní cena' : 700 , 'Daň' : 27 } ,
... { 'id' :03, 'Titul' : 'Čisticí prostředek' , 'Prodejní cena' : 400 , 'Daň' : 22 } ,
... { 'id' :04, 'Titul' : 'Parfém' , 'Prodejní cena' : 900 , 'Daň' : 30 } ,
... { 'id' :05, 'Titul' : 'Mlha' , 'Prodejní cena' : 850 , 'Daň' : 27 } ] )







Je čas podívat se na vložený záznam v „testovací“ databázi. Za tímto účelem musíte vypnout metodu „find()“ spolu s metodou „forEach“, přičemž jako argument v instrukci „db“ vezmete „printjson“. Pomocí kolekce s názvem „objednávka“ máme na obrazovce zobrazen záznam.



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



Je nejvyšší čas použít operátor „$min“ ve funkčním dotazu „updateOne“ k aktualizaci jednoho záznamu z kolekce „order“, která byla právě vytvořena. Pole „id“ se používá jako jedinečný identifikátor k aktualizaci konkrétního záznamu z databáze, zatímco operátor „$min“ se použije na pole „SalePrice“ k aktualizaci jeho hodnoty na 600, pokud je nižší než již vložená hodnota. Výstupní zpráva ukazuje, že dotaz byl úspěšný, ale nebyly provedeny žádné aktualizace.





test > db.order.updateOne ( { id: 3 } , { $ min : { Prodejní cena: 600 } } )

Důvod, proč není provedena žádná aktualizace pole „SalePrice“ 3. záznamu, je ten, že obsahuje hodnotu „400“, což je méně než „600“. Proto operátor „$min“ neaktualizuje minimální hodnotu „400“ větší hodnotou „600“ podle následujícího přiloženého dotazu find():



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

Udělejme malou změnu v aktualizačním dotazu, abychom tentokrát získali jiný výstup. Používáme úplně stejnou instrukci „db“, která v ní využívá funkci „updateOne“ k úpravě jednoho záznamu „3“. Operátor „$min“ se použije na pole „SalePrice“ a nastaví jeho hodnotu na „300“, pokud je hodnota „300“ menší než již vložená hodnota. Víme, že již vložená hodnota „400“ v poli SalePrice je větší než nová hodnota „300“, která se má porovnávat. Tentokrát tedy nahradí „400“ „300“. Výstupní zpráva ukazuje úspěšné provedení tohoto dotazu. Upravený počet = 1 znamená, že je upraven 1 záznam.

test > db.order.updateOne ( { id: 3 } , { $ min : { Prodejní cena: 300 } } )

Po zobrazení záznamů kolekce „objednávky“ z databáze „test“ ve formátu JSON pomocí instrukce funkce „find()“ v prostředí MongoDB jsme zjistili, že 3. záznam je úspěšně aktualizován. Hodnota 400 v poli „SalePrice“ je nahrazena hodnotou 300.

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

Příklad 2:

V rámci této ilustrace MongoDB získáváme záznamy konkrétní databáze tak, že je seskupujeme podle operátora „$min“ podle minimální hodnoty v záznamech. Předpokládejme, že máte stejných 5 záznamů v kolekci „objednávky“ „testovací“ databáze MongoDB a potřebujete mít nějaká duplicitní data v konkrétních polích „testovací“ databáze. Za tímto účelem přidáváme další záznamy do kolekce „objednávka“ databáze „test“. Tentokrát vložíme duplicitní hodnoty pro pole „Titul“. Používá se v klauzuli „$group“ k vytvoření skupiny jedinečných hodnot. Následující výstup zobrazuje nově vložené 3 další záznamy pro „testovací“ databázi. Nyní má kolekce „objednávka“ duplicitní hodnoty pro pole „Název“ ve srovnání s 5 starými záznamy. Zbytek používá to samé.

Poté, co máte celkem 8 záznamů v kolekci „objednávky“ databáze „test“, je čas otestovat operátora $min MongoDB po jeho aplikaci na konkrétní pole, které je seskupeno podle jiného pole. Přiložený příkaz agregace je o tom všem. Začíná klíčovým slovem „db“, za kterým následuje název kolekce v konkrétní databázi a funkce agregace(). Agregační funkce začíná použitím klauzule $group z MongoDB, která se zde používá zejména k zobrazení dat ve skupině týkající se pole „Titul“ databáze „test“, kde pole „Title“ je považováno za jedinečný klíč. .

Současně je samostatně inicializováno pole ceny, které přebírá pouze záznam minimální hodnoty z celkem 8 stejných záznamů prostřednictvím operátoru „$min“, který je na něj aplikován. Výstup tohoto spuštění dotazu zobrazuje zobrazení 5 záznamů s malou aktualizací v sekci ceny. Vidíte, že se nezobrazují žádné opakující se záznamy. Zde jsou zobrazeny některé unikátní a nejmenší hodnoty.

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

Závěr

Tato příručka je sbírkou ilustrací MongoDB, které zobrazují jednoduchý způsob použití operátoru „$min“. Úvodní odstavec se používá k diskusi o účelu jeho použití v MongoDB. První část tohoto článku pojednává o tom, jak operátor „$min“ funguje a nefunguje pro jeden záznam v databázi, tj. aktualizovat nebo vložit záznam jako minimální hodnotu. Poslední příklady také demonstrují jeho použití k seskupení záznamu kolekce jako jedinečného v celé databázi.