MongoDB $Min -operaattori

Mongodb Min Operaattori



Jos et ole uusi tietokantojen tai ohjelmoinnin käyttäjä, sinun on täytynyt kokeilla ohjelmia ja kyselyitä, jotka käyttävät vertailuoperaattoreita – suurempi kuin, pienempi kuin, yhtä suuri jne. MongoDB:ssä, jossa käytämme '$set'-operaattoria päivittää tietty kenttätietue tai lisätä uusi tietue tietokantaan, voimme myös saavuttaa saman tuloksen käyttämällä vertailuoperaattoreita, kuten '$min' ja '$max'. MongoDB:ssä '$min'-operaattoria voidaan käyttää useissa funktiokyselyissä tietyn kentän päivittämiseen, kun uusi arvo on pienempi kuin jo lisätty arvo. Sitä voidaan käyttää myös kokoelman tietueiden ryhmittelyyn ja näyttämiseen tietyssä järjestyksessä. Tämä opas auttaa sinua eri tavoissa hylätä '$min'-operaattori MongoDB:ssä.

Esimerkki 1:

Ensimmäisestä kuvasta alkaen esittelemme '$min'-operaattorin käyttöä MongoDB:ssä jo lisätyn tietueen päivittämiseen käyttämällä MongoDB-kuorityökalua Windows-järjestelmässä. Siksi sinulla on oltava joitain tietueita, jotka on jo lisätty tietokantaan. Joten käytämme insertMany()-funktiokyselyä lisätäksemme yhteensä 5 tietuetta 'testi'-tietokannan 'tilaus'-kokoelmaan. Jokainen lisätty tietue, joka näkyy seuraavassa kuvassa, sisältää yhteensä 4 kenttää – id, otsikko, myyntihinta ja vero. Nämä 5 tietueen tiedot on lisätty onnistuneesti liitetyn lähdön mukaisesti:

testata > db.order.insertMany ( [ { 'id' :01, 'Otsikko' : 'Saippua' , 'Myyntihinta' : 500 , 'Verottaa' : 24 } ,
... { 'id' :02, 'Otsikko' : 'shampoo' , 'Myyntihinta' : 700 , 'Verottaa' : 27 } ,
... { 'id' :03, 'Otsikko' : 'Pesuaine' , 'Myyntihinta' : 400 , 'Verottaa' : 22 } ,
... { 'id' :04, 'Otsikko' : 'Hajuvesi' , 'Myyntihinta' : 900 , 'Verottaa' : 30 } ,
... { 'id' :05, 'Otsikko' : 'Sumu' , 'Myyntihinta' : 850 , 'Verottaa' : 27 } ] )







On aika tarkastella lisättyä tietuetta 'testi'-tietokannassa. Tätä varten sinun on hylättävä 'find()'-menetelmä yhdessä 'forEach'-menetelmän kanssa, ottaen 'printjson' argumentiksi 'db'-ohjeessa. Käyttämällä kokoelmaa nimeltä 'tilaus', meillä on tietue, joka näkyy näytöllä.



testata > db.tilaus.etsi ( ) .jokaiselle ( printjson )



On korkea aika käyttää '$min'-operaattoria 'updateOne'-funktiokyselyssä päivittääksesi yksi tietue juuri luodusta 'tilaus'-kokoelmasta. 'Id'-kenttää käytetään yksilöllisenä tunnisteena tietyn tietueen päivittämiseen tietokannasta, kun taas '$min'-operaattoria käytetään 'SalePrice'-kenttään päivittämään sen arvo 600:aan, jos se on pienempi kuin jo lisätty arvo. Tulosviesti osoittaa, että kysely on onnistunut, mutta päivityksiä ei ole tehty.





testata > db.order.updateOne ( { id: 3 } , { $min : { Myyntihinta: 600 } } )

Syy siihen, miksi 3. tietueen SalePrice-kenttään ei tehdä päivitystä, on se, että se sisältää arvon '400', joka on pienempi kuin '600'. Siksi '$min'-operaattori ei päivitä minimiarvoa '400' suuremmalla arvolla '600' seuraavan liitteenä olevan find()-kyselyn mukaisesti:



testata > db.tilaus.etsi ( ) .jokaiselle ( printjson )

Tehdään pieni muutos päivityskyselyyn saadaksesi eri tulosteen tällä kertaa. Käytämme samaa 'db'-käskyä, joka käyttää 'updateOne'-toimintoa sen yksittäisen tietueen '3' muokkaamiseen. '$min'-operaattoria käytetään 'SalePrice'-kentässä sen arvoksi '300', jos arvo '300' on pienempi kuin jo lisätty arvo. Tiedämme, että SalePrice-kenttään jo lisätty arvo '400' on suurempi kuin uusi vertailtava arvo '300'. Joten se korvaa '400' sanalla '300' tällä kertaa. Tulosviesti näyttää tämän kyselyn onnistuneen suorituksen. Muokattu määrä = 1 tarkoittaa, että 1 tietue on muokattu.

testata > db.order.updateOne ( { id: 3 } , { $min : { Myyntihinta: 300 } } )

Kun näytettiin 'tilaus'-kokoelman tietueet 'test'-tietokannasta JSON-muodossa 'find()'-funktion käskyn avulla MongoDB-kuoressa, havaitsimme, että kolmas tietue on päivitetty onnistuneesti. 'SalePrice'-kentän arvo 400 korvataan arvolla 300.

testata > db.tilaus.etsi ( ) .jokaiselle ( printjson )

Esimerkki 2:

Tässä MongoDB-kuvassa haemme tietyn tietokannan tietueet ryhmittelemällä ne '$min'-operaattorin mukaan tietueiden vähimmäisarvon mukaan. Oletetaan, että sinulla on samat 5 tietuetta MongoDB:n 'testi'-tietokannan 'tilaus'-kokoelmassa ja että sinulla on oltava päällekkäisiä tietoja 'testi'-tietokannan tietyissä kentissä. Tätä varten lisäämme lisää tietueita 'testi'-tietokannan 'tilaus'-kokoelmaan. Tällä kertaa lisäämme päällekkäiset arvot Otsikko-kenttään. Sitä käytetään '$group' -lauseessa muodostamaan ryhmä yksilöllisiä arvoja. Seuraava tulos näyttää äskettäin lisätyt 3 muuta tietuetta 'testi'-tietokantaan. Nyt 'tilaus'-kokoelmassa on päällekkäisiä arvoja 'Otsikko'-kenttään verrattuna viiteen vanhaan tietueeseen. Loput käyttävät samaa.

Kun 'testi'-tietokannan 'tilaus'-kokoelmassa on yhteensä 8 tietuetta, on aika testata MongoDB:n $min-operaattoria sen jälkeen, kun sitä on käytetty tietyssä kentässä, joka on ryhmitelty toisen kentän mukaan. Liitteenä oleva aggregate-komento koskee kaikkea tätä. Se alkaa avainsanalla 'db', jota seuraa tietyn tietokannan kokoelman nimi ja aggregate()-funktio. Kokoonpanotoiminto alkaa MongoDB:n $group-lausekkeen käytöllä, jota käytetään tässä erityisesti näyttämään tiedot ryhmässä, joka koskee 'testi'-tietokannan 'Title'-kenttää, jossa 'Title'-kenttä otetaan yksilöllisenä avaimena. .

Samanaikaisesti hintakenttä alustetaan erikseen, mikä ottaa vain minimiarvotietueen kahdeksasta samasta tietueesta siihen sovellettavan '$min'-operaattorin kautta. Tämän kyselyn suorituksen tulos näyttää 5 tietuetta pienellä päivityksellä hintaosiossa. Voit nähdä, että toistuvia tietueita ei näytetä. Joitakin ainutlaatuisia ja pienimmän arvon tietueita näytetään tässä.

testata > db.order.aggregate ( [ { $ryhmä : { _id: ' $Title ' , hinta: { $min : ' $myyntihinta ' } } } ] )

Johtopäätös

Tämä opas on kokoelma MongoDB-kuvia, jotka näyttävät yksinkertaisen tavan käyttää “$min”-operaattoria. Johdantokappaletta käytetään keskustelemaan sen käytön tarkoituksesta MongoDB:ssä. Tämän artikkelin ensimmäisessä osassa käsitellään, kuinka '$min'-operaattori toimii, eikä se toimi yhdelle tietokannan tietueelle, eli tietueen päivittämiseen tai lisäämiseen minimiarvona. Viimeiset esimerkit osoittavat myös sen käytön kokoelmatietueen ryhmittelyssä ainutlaatuiseksi koko tietokannassa.