MongoDB $Min operatorius

Mongodb Min Operatorius



Jei nesate naujas duomenų bazių ar programavimo vartotojas, turite būti išbandęs programas ir užklausas, kuriose naudojami palyginimo operatoriai – didesnis nei, mažesnis už, lygus ir tt MongoDB, kur mes naudojame operatorių „$set“, kad atnaujinti konkretaus lauko įrašą arba pridėti naują įrašą į duomenų bazę, tą patį rezultatą galime pasiekti naudodami palyginimo operatorius, pvz., „$min“ ir „$max“. MongoDB operatorius „$min“ gali būti naudojamas daugelyje funkcijų užklausų, norint atnaujinti konkretų lauką, kai nauja reikšmė yra mažesnė už jau įterptą reikšmę. Be to, jis gali būti naudojamas sugrupuoti ir rodyti kolekcijos įrašus tam tikra tvarka. Šis vadovas padeda įvairiais būdais atmesti „$min“ operatorių MongoDB.

1 pavyzdys:

Pradėdami nuo pirmosios iliustracijos, demonstruojame operatoriaus „$min“ naudojimą MongoDB, kad atnaujintume jau įterptą įrašą naudodami MongoDB apvalkalo įrankį „Windows“ sistemoje. Todėl turite turėti kai kuriuos įrašus, kurie jau yra įtraukti į jūsų duomenų bazę. Taigi, mes naudojame funkcijos insertMany() užklausą, kad įtrauktume iš viso 5 įrašus į „bandymo“ duomenų bazės „užsakymo“ kolekciją. Kiekviename įterptame įraše, kuris parodytas šioje iliustracijoje, iš viso yra 4 laukai – ID, pavadinimas, pardavimo kaina ir mokesčiai. Šie 5 įrašų duomenys sėkmingai įterpti pagal pridedamą išvestį:

bandymas > db.order.insertMany ( [ { 'id' :01, 'Pavadinimas' : 'muilas' , 'Pardavimo kaina' : 500 , 'Mokestis' : 24 } ,
... { 'id' :02, 'Pavadinimas' : 'šampūnas' , 'Pardavimo kaina' : 700 , 'Mokestis' : 27 } ,
... { 'id' :03, 'Pavadinimas' : 'Ploviklis' , 'Pardavimo kaina' : 400 , 'Mokestis' : 22 } ,
... { 'id' :04, 'Pavadinimas' : 'Kvepalai' , 'Pardavimo kaina' : 900 , 'Mokestis' : 30 } ,
... { 'id' :05, 'Pavadinimas' : 'Migla' , 'Pardavimo kaina' : 850 , 'Mokestis' : 27 } ] )







Atėjo laikas pažvelgti į įterptą įrašą „bandymo“ duomenų bazėje. Tam reikia atmesti „find()“ metodą kartu su „forEach“ metodu, „printjson“ kaip argumentą „db“ instrukcijoje. Naudodami kolekciją pavadinimu „užsakymas“, ekrane rodomas įrašas.



bandymas > db.užsakymas.rasti ( ) .kiekvienam ( printjson )



Pats laikas funkcijos „updateOne“ užklausoje naudoti operatorių „$min“, kad atnaujintumėte vieną įrašą iš ką tik sukurtos „užsakymo“ kolekcijos. Laukas „id“ naudojamas kaip unikalus identifikatorius, norint atnaujinti konkretų įrašą iš duomenų bazės, o operatorius „$min“ taikomas laukui „SalePrice“, kad jo vertė būtų atnaujinta iki 600, jei ji mažesnė už jau įterptą reikšmę. Išvesties pranešimas rodo, kad užklausa buvo sėkminga, tačiau naujinimai neatliekami.





bandymas > db.order.updateOne ( { ID: 3 } , { $min : { Pardavimo kaina: 600 } } )

Priežastis, kodėl 3-ojo įrašo laukas „Pardavimo kaina“ neatnaujinamas, yra ta, kad jame yra „400“ reikšmė, kuri yra mažesnė nei „600“. Todėl operatorius „$min“ neatnaujina minimalios „400“ reikšmės didesne „600“ reikšme, kaip nurodyta toliau pateiktoje užklausoje „Find()“:



bandymas > db.užsakymas.rasti ( ) .kiekvienam ( printjson )

Šiek tiek pakeiskime atnaujinimo užklausą, kad šį kartą gautume kitokią išvestį. Mes naudojame tą pačią „db“ instrukciją, kuri naudoja „updateOne“ funkciją, kad pakeistume vieną „3“ įrašą. Operatorius „$min“ taikomas lauke „SalePrice“, kad jo reikšmė būtų nustatyta į „300“, jei „300“ vertė yra mažesnė už jau įterptą reikšmę. Žinome, kad jau įterpta vertė „400“ lauke „SalePrice“ yra didesnė nei nauja vertė „300“, kurią reikia palyginti. Taigi, šį kartą jis pakeičia „400“ į „300“. Išvesties pranešimas rodo sėkmingą šios užklausos vykdymą. Modifikuotas skaičius = 1 reiškia, kad pakeistas 1 įrašas.

bandymas > db.order.updateOne ( { ID: 3 } , { $min : { Pardavimo kaina: 300 } } )

Parodžius „užsakymo“ kolekcijos įrašus iš „bandomosios“ duomenų bazės JSON formatu per „find()“ funkcijos nurodymą MongoDB apvalkale, nustatėme, kad 3 įrašas sėkmingai atnaujintas. Lauko „Pardavimo kaina“ reikšmė 400 pakeičiama reikšme 300.

bandymas > db.užsakymas.rasti ( ) .kiekvienam ( printjson )

2 pavyzdys:

Šioje MongoDB iliustracijoje mes gauname konkrečios duomenų bazės įrašus, sugrupuodami juos pagal operatorių „$min“ pagal mažiausią įrašų reikšmę. Tarkime, kad MongoDB „bandomosios“ duomenų bazės „užsakymo“ kolekcijoje turite tuos pačius 5 įrašus ir tam tikruose „bandomosios“ duomenų bazės laukuose turite turėti kelis pasikartojančius duomenis. Tam mes įtraukiame daugiau įrašų į „bandymo“ duomenų bazės „užsakymų“ kolekciją. Šį kartą įterpiame pasikartojančias reikšmes į lauką „Pavadinimas“. Jis naudojamas sakinyje „$group“, kad sudarytų unikalių reikšmių grupę. Toliau pateikiamame išvestyje rodomi naujai įterpti dar 3 „bandymo“ duomenų bazės įrašai. Dabar rinkinyje „užsakymas“ yra pasikartojančios lauko „Pavadinimas“ reikšmės, palyginti su 5 senais įrašais. Likusi dalis naudoja tą patį.

Turint iš viso 8 įrašus „bandymo“ duomenų bazės „užsakymo“ kolekcijoje, laikas išbandyti MongoDB $min operatorių po jo taikymo konkrečiame lauke, sugrupuotame pagal kitą lauką. Pridedama bendra komanda yra apie tai. Jis prasideda raktiniu žodžiu „db“, po kurio nurodomas kolekcijos pavadinimas tam tikroje duomenų bazėje ir agregate () funkcija. Suvestinė funkcija prasideda naudojant MongoDB $group sąlygą, kuri čia ypač naudojama norint rodyti duomenis grupėje, susijusioje su 'testo' duomenų bazės lauku 'Pavadinimas', kur laukas 'Pavadinimas' laikomas unikaliu raktu. .

Tuo pačiu metu kainos laukas inicijuojamas atskirai, o tai paima tik minimalios vertės įrašą iš 8 tų pačių įrašų, naudojant jam taikomą operatorių „$min“. Šios užklausos vykdymo išvestyje rodomi 5 įrašai su nedideliu kainų skilties atnaujinimu. Matote, kad nerodomi pasikartojantys įrašai. Čia rodomi kai kurie unikalūs ir mažiausios vertės įrašai.

bandymas > db.order.agregate ( [ { $grupė : { _id: $Title , kaina: { $min : $ pardavimo kaina } } } ] )

Išvada

Šis vadovas yra MongoDB iliustracijų rinkinys, kuriame pateikiamas paprastas būdas naudoti operatorių „$min“. Įvado pastraipa naudojama aptarti jos naudojimo MongoDB tikslą. Pirmoje šio straipsnio dalyje aptariama, kaip veikia „$min“ operatorius ir neveikia vienam duomenų bazės įrašui, t. y. norint atnaujinti arba įterpti įrašą kaip mažiausią reikšmę. Be to, paskutiniai pavyzdžiai rodo, kad jis naudojamas rinkinio įrašui grupuoti kaip unikalų visoje duomenų bazėje.