MongoDB $Max Operaattori

Mongodb Max Operaattori



MongoDB keksi monia operaattoreita suorittaakseen erikoistapahtumia, kuten tietueiden päivittämistä, uuden tietueen lisäämistä ja tietueiden näyttämistä tietyissä olosuhteissa. Yksi näistä operaattoreista on '$max'-operaattori, jota käytetään tietueen suurimman arvon tarkistamiseen. Sen lisäksi voimme käyttää sitä päivittämään pienimmän arvon uudella suurimmalla arvolla vertaamalla niitä 'päivitys'-funktion ohjeessa. Toinen '$max'-operaattorin käyttötarkoitus on ryhmitellä ja näyttää tietyn kokoelman tietueet siten, että se voi näyttää vain suurimman arvon, mutta jättää huomiotta pienimmän arvon, kun tietokannassa on päällekkäisiä tietueita. Tässä oppaassa aiomme käyttää yksinkertaisia ​​kyselyesimerkkejä keskustellaksesi aiemmin mainituista '$max'-operaattorin käytöstä MongoDB-komentoriviohjelmassa Windows-alustallamme.

Esimerkki 1:

Alkaen kuvasta keskustellaksesi ja kuinka '$max'-operaattori toimii MongoDB-kuoressa, meillä on oltava kokoelma nimeltä 'data', joka on luotava jo. Luodaksemme tämän kokoelman, meidän on lisättävä siihen joitakin tietueita suoraan ilman mitään 'luo'-ohjetta. Lisäysohje riittää luomaan kokoelman ja lisäämään siihen tietueet. Käytämme kyselyssä 'insertMany'-funktiota lisätäksemme neljä tietuetta, joista jokaisessa on 4 erityyppistä kenttää.

testata > db.data.insertMany ( [ { 'id' : yksi , 'Nimi' : 'Bravo' , 'Palkka' : 65 000 , 'Ikä' : 44 } ,
... { 'id' : 2 , 'Nimi' : 'Stephen' , 'Palkka' : 77 000 , 'Ikä' : 55 } ,
... { 'id' : 3 , 'Nimi' : 'Maria' , 'Palkka' : 42 000 , 'Ikä' : 27 } ,
... { 'id' : 4 , 'Nimi' : 'Hawkin' , 'Palkka' : 58 000 , 'Ikä' : 33 } ] )







Lisää-komento on onnistunut ja tulossanoma osoittaa, että tietueet on lisätty.



Kun tietueet on lisätty MongoDB:n 'data' -kokoelmaan, on aika nähdä ne tietueet kuoressa. Siten suoritamme 'find()'-funktion käskyn MongoDB Cli:ssä ja sen jälkeen 'forEach()' -funktion, jolloin printjson-argumentti näyttää tuloksen JSON-muodossa. Shellissä näkyvä tulos näyttää yhteensä 4 asiakirjaa kokoelmasta, jotka näkyvät seuraavassa tulostekuvassa:



testata > db.data.find ( ) .jokaiselle ( printjson )





Kokeillaan '$max'-operaattoria MongoDB:n päivityskomennossa jo lisättyjen tietueiden muokkaamiseksi. Siten updateOne()-funktiota käytetään tässä muokkaamaan vain yhtä 'data'-kokoelman tietuetta, kuten tiettyä tietuetta, jossa 'id'-kentän arvo on '2'. '$max'-operaattoria käytetään 'Data'-keräyksen 'Palkka'-kenttään sen tarkistamiseksi, onko 'Palkka'-kentän arvo suurempi kuin 55000. Jos ei, päivitä tietue arvolla 55000. Tämän tulosteen tulos. updateOne()-funktiokyselyllä, joka näyttää '0' muutosmäärän tietueessa '2' on alle 55 000 palkan arvoa.

testata > db.data.updateOne ( { id: 2 } , { $ max : { Palkka: 55 000 } } )



Tämän päivityksen jälkeen yritämme samaa 'find()'-funktion kyselyä näyttääksemme muokatun tuloksen MongoDB-komentorivikuoressa. Mutta saamme saman tulosteen, jonka saimme ennen 'päivitys'-ohjeen käyttöä. Ei tapahtunut muutosta, koska 77000-arvo on suurempi kuin 55000.

testata > db.data.find ( ) .jokaiselle ( printjson )

Kokeillaan samaa updateOne()-kyselyä vielä kerran pienellä muokkauksella. Tällä kertaa kokeilemme suurempaa arvoa, joka on '85000' kuin '77000'-arvoa, joka on jo 'tiedonkeruun' Palkka-kentässä muuttaaksemme tuloksiamme. Tulos näyttää tällä kertaa muutosmäärän '1', koska '85000'-arvo korvaa kentässä jo olemassa olevan arvon '77000', kun vertailu tapahtui vain tämän kyselyn '$max'-operaattorin takia.

testata > db.data.updateOne ( { id: 2 } , { $ max : { Palkka: 85 000 } } )

Korvattuamme onnistuneesti pienemmän arvon '77000' uudella arvolla '85000' MongoDB:n '$max'-operaattorin kautta, käytämme lopuksi 'find()'-funktiota 'db'-ohjeessa tarkistaaksemme tämän päivityksen. onko päivitys onnistunut vai ei. Tulos osoittaa, että tämän kokoelman 2. tietueen Palkka-kentän arvo on päivitetty täydellisesti.

testata > db.data.find ( ) .jokaiselle ( printjson )

Esimerkki 2:

Siirrytään toiseen esimerkkiin käyttääksesi '$max'-operaattoria MongoDB:ssä. Tällä kertaa jätimme pois '$max'-operaattorin ryhmittelemään ja näyttämään kokoelman yksilölliset tietueet, jos samoilla kenttäarvoilla on kaksoiskappaleita. Tätä varten lisäämme vielä 2 tietuetta 'testi'-tietokannan 'data'-kokoelmaan. Nämä tietueet sisältävät 2 samaa arvoa 'Nimi'-kentässä, jotka ovat myös jo lisätyssä 4 tietueessa ja loput ovat erilaisia. Tietueiden lisäämiseen käytämme samaa ”db”-käskyä, joka sisältää ”insertMany”-funktion, jotta ”data”-kokoelma päivittyy.

testata > db.data.insertMany ( [ { 'id' : 5 , 'Nimi' : 'Bravo' , 'Palkka' : 35 000 , 'Ikä' : Neljä viisi } ,
{ 'id' : 6 , 'Nimi' : 'Hawkin' , 'Palkka' : 67 000 , 'Ikä' : 33 } ] )

Ohje suoritetaan onnistuneesti.

Nyt kun 2 uutta tietuetta on lisätty, voit myös näyttää ne käyttämällä samaa 'etsi'-toimintoa 'db'-ohjeessa, jota seuraa 'forEach'-toiminto. Seuraava kuvan näyttötulos näyttää 2 uutta tietuetta tämän kokoelman lopussa:

testata > db.data.find ( ) .jokaiselle ( printjson )

'Data'-keräyksen 6 tietueen näyttämisen jälkeen olemme valmiita suorittamaan sille aggregointitoiminnon. Tästä syystä 'koonti'-toimintoa käytetään seuraavassa luetellussa kyselyssä. Tällä toiminnolla käytämme “$group”-operaattoria ryhmittelemään “data”-kokoelman tietueita kenttien “id” ja “Palkka” yksilöllisten nimien mukaan. '$max'-operaattoria käytetään tietueiden 'Palkka'-kenttään saadakseen näyttöön suurimmat arvot. Saat suurimman arvon Palkka-kentästä nimien kaksoiskappaleiden mukaan 'Nimi'-kentässä, jota käytetään 'id':nä tälle ryhmittelylle näytettäväksi. Yhteensä 4 tietuetta näytetään. Pienin arvo (kopiotietueista) ohitetaan, kun suurin arvo näytetään.

db.data.aggregate ( [ { $ryhmä : { _id: ' $Name ' , Palkka: { $ max : ' $ Palkka ' } } } ] )

Johtopäätös

Tämän oppaan ensimmäinen kappale auttaa sinua ymmärtämään MongoDB:ssä käytettävien operaattoreiden tärkeyden, erityisesti '$max'-operaattorin ja sen käytön MongoDB-kuoressa. Tämä opas sisältää kaksi komentopohjaista esimerkkiä, jotka liittyvät '$max'-operaattoriin sen tarkoituksen osoittamiseksi. Kun käyt läpi MongoDB-kuvia, voit suorittaa hyödyllisiä tapahtumia tietokannassa, olipa kyseessä jo olemassa olevan tietueen korvaaminen uudella arvolla tai tietueiden näyttäminen ryhmittelemällä ne '$max'-operaattorilla.