MongoDB $Max operatorius

Mongodb Max Operatorius



MongoDB sugalvojo daug operatorių, kad galėtų atlikti specialias operacijas, pvz., atnaujinti įrašus, pridėti naują įrašą ir rodyti įrašus tam tikromis sąlygomis. Vienas iš tų operatorių yra „$max“ operatorius, kuris naudojamas didžiausiai įrašo vertei patikrinti. Be to, mes galime jį naudoti norėdami atnaujinti mažiausią reikšmę nauja didžiausia verte, palyginę jas funkcijos „atnaujinimo“ instrukcijoje. Kitas operatoriaus „$max“ panaudojimas yra tam tikros kolekcijos įrašų grupavimas ir atvaizdavimas taip, kad būtų galima rodyti tik didžiausią reikšmę, o mažiausią reikšmę ignoruojant, kai duomenų bazėje yra pasikartojančių įrašų. Šiame vadove mes naudosime paprastus užklausų pavyzdžius, kad aptartume anksčiau minėtą operatoriaus „$max“ naudojimą MongoDB komandų eilutės programoje mūsų „Windows“ platformoje.

1 pavyzdys:

Pradedant nuo iliustracijos, skirtos aptarti ir tai, kaip „$max“ operatorius veikia MongoDB apvalkale, turime turėti rinkinį pavadinimu „duomenys“, kuris jau turi būti sukurtas. Norėdami sukurti šią kolekciją, turime į ją įtraukti kai kuriuos įrašus tiesiogiai, nenaudodami jokios „sukurti“ instrukcijos. Įterpimo instrukcijos pakanka sukurti rinkinį ir įtraukti į jį įrašus. Užklausoje naudojame funkciją „insertMany“, kad pridėtume keturis įrašus, kurių kiekvienas turi 4 skirtingų tipų laukus.

bandymas > db.data.insertMany ( [ { 'id' : vienas , 'Vardas' : 'Bravo' , 'Atlyginimas' : 65 000 , 'amžius' : 44 } ,
... { 'id' : 2 , 'Vardas' : 'Stevenas' , 'Atlyginimas' : 77 000 , 'amžius' : 55 } ,
... { 'id' : 3 , 'Vardas' : 'Marija' , 'Atlyginimas' : 42 000 , 'amžius' : 27 } ,
... { 'id' : 4 , 'Vardas' : 'Hawkin' , 'Atlyginimas' : 58 000 , 'amžius' : 33 } ] )







Įterpimo komanda yra sėkminga, o išvesties pranešimas rodo, kad įrašai yra pridėti.



Įdėjus įrašus į mūsų MongoDB „duomenų“ kolekciją, laikas pamatyti tuos įrašus apvalkale. Taigi „MongoDB Cli“ paleidžiame funkcijos „find()“ nurodymą, po kurio seka funkcija „forEach()“, naudojant argumentą printjson, kad būtų rodomas rezultatas JSON formatu. Rezultatas, kuris rodomas apvalkale, rodo iš viso 4 kolekcijos dokumentus, kurie rodomi šiame išvesties paveikslėlyje:



bandymas > db.data.find ( ) .kiekvienam ( printjson )





Išbandykime „$max“ operatorių MongoDB atnaujinimo komandoje, kad pakeistume jau įterptus įrašus. Taigi, updateOne() čia naudojamas tik vienam „duomenų“ rinkinio įrašui modifikuoti, pavyzdžiui, konkretų įrašą, kuriame „id“ lauko reikšmė yra „2“. Operatorius „$max“ taikomas „duomenų“ rinkinio „Atlyginimas“ lauke, siekiant patikrinti, ar lauko „Atlyginimas“ reikšmė yra didesnė nei 55 000. Jei ne, atnaujinkite įrašą su 55 000. Šio išvesties rezultatas „UpdateOne()“ funkcijos užklausa, kuri rodo „0“ pakeitimų skaičių, nes įrašas „2“ turi mažesnę nei 55 000 atlyginimo vertę.

bandymas > db.data.updateOne ( { ID: 2 } , { Maks. $ : { Atlyginimas: 55 000 } } )



Po šio atnaujinimo bandome tą pačią funkcijos „find()“ užklausą, kad pakeistume rezultatą MongoDB komandinės eilutės apvalkale. Bet mes gauname tą pačią išvestį, kurią gavome prieš naudodami „atnaujinimo“ instrukciją. Pakeitimų nebuvo, nes 77 000 vertė yra didesnė nei 55 000.

bandymas > db.data.find ( ) .kiekvienam ( printjson )

Išbandykime tą pačią updateOne() užklausą dar kartą su nedideliais pakeitimais. Šį kartą bandome naudoti didesnę vertę, kuri yra „85000“, nei „77000“, kuri jau yra „duomenų“ rinkinio lauke „Atlyginimas“, kad pakeistume savo produkciją. Šį kartą išvestis rodo pakeitimų skaičių „1“, nes „85000“ reikšmė pakeičia jau esančią „77000“ reikšmę lauke po to, kai buvo atliktas palyginimas vien dėl operatoriaus „$max“ šioje užklausoje.

bandymas > db.data.updateOne ( { ID: 2 } , { Maks. $ : { Atlyginimas: 85 000 } } )

Sėkmingai pakeitę mažesnę reikšmę „77000“ nauja „85000“ reikšme per MongoDB operatorių „$max“, pagaliau naudojame funkciją „find()“ „db“ instrukcijoje, kad patikrintume, ar nėra šio naujinimo. ar jis sėkmingai atnaujintas, ar ne. Išvestis rodo, kad šio rinkinio antrojo įrašo lauko „Atlyginimas“ reikšmė puikiai atnaujinta.

bandymas > db.data.find ( ) .kiekvienam ( printjson )

2 pavyzdys:

Pereikime prie kito pavyzdžio, norėdami pasinaudoti „MongoDB“ operatoriumi „$max“. Šį kartą atmetėme operatorių „$max“, kad sugrupuotume ir rodytume unikalius kolekcijos įrašus, jei yra tų pačių lauko verčių dublikatų. Tam į „bandomosios“ duomenų bazės „duomenų“ rinkinį įterpiame dar 2 įrašus. Šiuose įrašuose yra 2 tos pačios reikšmės lauke „Vardas“, kurios taip pat yra jau įterptuose 4 įrašuose, o likusieji yra skirtingi. Norėdami įterpti įrašus, naudojame tą pačią „db“ instrukciją, kurioje yra funkcija „insertMany“, kad „duomenų“ rinkinys būtų atnaujintas.

bandymas > db.data.insertMany ( [ { 'id' : 5 , 'Vardas' : 'Bravo' , 'Atlyginimas' : 35 000 , 'amžius' : Keturi. Penki } ,
{ 'id' : 6 , 'Vardas' : 'Hawkin' , 'Atlyginimas' : 67 000 , 'amžius' : 33 } ] )

Instrukcija sėkmingai įvykdyta.

Dabar, kai pridedami 2 nauji įrašai, taip pat galite juos rodyti naudodami tą pačią „rasti“ funkciją „db“ instrukcijoje, po kurios seka funkcija „forEach“. Toliau pateiktoje vaizdo išvestyje rodomi 2 nauji įrašai šios kolekcijos pabaigoje:

bandymas > db.data.find ( ) .kiekvienam ( printjson )

Parodę 6 „duomenų“ rinkinio įrašus, esame pasiruošę jame atlikti agregavimo funkciją. Taigi „suvestinė“ funkcija naudojama toliau nurodytoje užklausoje. Naudodami šią funkciją, mes naudojame operatorių „$group“, kad sugrupuotume „duomenų“ rinkinio įrašą pagal unikalius lauko „id“ ir „Atlyginimas“ pavadinimus. Operatorius „$max“ taikomas įrašų lauke „Atlyginimas“, kad būtų rodomos didžiausios vertės. Gaukite didžiausią vertę iš lauko Atlyginimas pagal pasikartojančius pavadinimus lauke „Vardas“, kuris naudojamas kaip „id“, kad būtų rodoma ši grupė. Iš viso rodomi 4 įrašai. Mažiausios vertės (iš pasikartojančių įrašų) nepaisoma, kol rodoma didžiausia vertė.

db.data.aggregate ( [ { $grupė : { _id: $Vardas , Atlyginimas: { Maks. $ : $ atlyginimas } } } ] )

Išvada

Pirmoji šio vadovo pastraipa padeda suprasti „MongoDB“ naudojamų operatorių, ypač „$max“ operatoriaus ir jo naudojimo MongoDB apvalkale, svarbą. Šiame vadove pateikiami du komandomis pagrįsti pavyzdžiai, susiję su „$max“ operatoriumi, siekiant parodyti jo paskirtį. Peržiūrėję MongoDB iliustracijas, galėsite atlikti keletą naudingų operacijų duomenų bazėje, nesvarbu, ar tai jau esamo įrašo pakeitimas nauja reikšme, ar įrašų rodymas sugrupuojant juos naudojant operatorių „$max“.