Asiakirjojen laskeminen MongoDB-koontilaskennan avulla

Asiakirjojen Laskeminen Mongodb Koontilaskennan Avulla



Kuten nimestä voi päätellä, MongoDB:n $count-aggregaatiota on käytettävä kenttätietueiden laskemiseen. Yksi suosituimmista tavoista laskea tietueita on käyttää count()-menetelmää. Lisäksi tietyt aggregointioperaattorit antavat sinun laskea tietueita, jotka on tuotu aggregaattiliukuhihnan edellisestä vaiheesta. Tässä oppaassa tänään keskustelemme MongoDB:n laskennan yhdistämisestä koodiesimerkkien avulla.

Esimerkki 01

Jotta voimme suorittaa $count-operaation MongoDB:n tietokantakokoelman kentille, meillä on oltava useita tietueita. Siksi loimme kokoelman nimeltä 'Test' ja lisäsimme siihen 12 tietuetta samanaikaisesti käyttämällä insertMany()-funktiota. Nyt tämän 'Testi'-kokoelman tietueet on esitetty MongoDB-kuoressa find()-funktiokyselyn kautta. Näet, että siinä on yhteensä kolme kenttää:_id, nimi ja pisteet.

testi> db.Test.find({})







Nyt käyttääksemme $count-vaihetta mihin tahansa kenttään, meidän on käytettävä MongoDB:n aggregaattifunktiota 'db'-ohjeessa. Aggregaattifunktio koostuu ehtolausekkeesta, jossa käytetään usein $match-operaattoria tietyssä kentässä, ja sen jälkeen uudesta kentästä, joka näyttää kokonaismäärän, joka on saatu määritetystä ehtokentästä käyttämällä $count-operaattoria.



Meidän tapauksessamme olemme käyttäneet $match-operaattoria etsimään vastaavia tietueita arvolle '60' pistekentässä, kun taas $count-operaattoria on käytetty laskemaan haettujen tietueiden kokonaismäärä ja näyttämään ne uusi kenttä nimeltä 'SameScore'. Tämän kyselyn tulos on näyttänyt kentän 'SameScore' arvolla '2', mikä osoittaa, että kokoelmassa 'Test' on kaksi tietuetta, joiden 'score' arvo '60' on 2.



db.Test.aggregate([ { $match: { 'pisteet' : 60 } }, { $count: 'SameScore' } ])

Voit myös käyttää $count-yhdistelmää laskeaksesi muut kentät kuin numerot, kuten testikokoelman 'nimi'-kentän. Olemme käyttäneet hakujen yhdistämistä etsiäksemme tietueita kokoelmasta, jossa nimikentän arvo on 'John'. Laskujen yhdistäminen on onnistuneesti laskenut osuvien tietueiden kokonaismäärän, joka on 2.





db.Test.aggregate([ { $match: { 'nimi' : 'John' } }, { $count: 'Sama nimi' } ])

Esimerkki 02

Päivitetään yllä oleva kysely ja sovelletaan toista ehtoa eri tietueiden saamiseksi. Tällä kertaa käytämme tuloskentän $match-aggregaatiota saadaksemme niiden tietueiden kokonaismäärän, joissa pistekentän arvo on alle 30. Laskujen yhteenlaskettu laskee tietueiden kokonaismäärän ja lisää uuteen arvoon. sarake 'GradeD'. Tulos näyttää tuloksen '2' vastaavan arvon laskentanumerona.

db.Test.aggregate( [ { $match: { score: { $lt: 30 } } }, { $count: 'D-luokka' } ] )

Voit myös käyttää $count-aggregaatiota, kun käytät loogisia operaattoreita suorittaaksesi useamman kuin yhden ehdon kenttätietueille. Siksi yhteensä kaksi ehtoa on sovellettu 'Piste'-kenttään käyttämällä $and-operaattoria: gte (suurempi tai yhtä suuri) ja lte (pienempi ja yhtä suuri). Molempien ehtojen on oltava tosia, jotta tulos saadaan ja sen tietueet lasketaan. Kokonaismäärä osoittaa, että tietueita on viisi, joilla on hakukriteerit.



db.Test.aggregate( [ { $match: { '$ja' : [ { 'pisteet' : {$gte: 60 }}, { 'pisteet' : {$lte: 80 }} ] }},

{ $count: 'luokka B' } ] )

Esimerkki 03

Yllä olevissa kuvissa olemme käyttäneet lukujen yhdistämistä saadaksemme vain tiettyjen kenttäarvojen, kuten tietyn pistemäärän tai nimen, vastaavien tietueiden määrän. MongoDB:n aggregointimenetelmän avulla voit saada kaikkien kokoelmassa päällekkäisiä arvoja sisältävien tietueiden lukumäärän.

Tätä varten sinun on käytettävä $group-aggregaatiota aggregate-funktion komennossa, kuten alla. Kenttää _id on käytetty määrittämään 'nimi'-kenttä, jossa laskennan yhdistäminen toimisi. Tämän lisäksi NameCount-käyttäjän määrittämä kenttä käyttää $count-yhdistelmää laskeakseen useita kaksoiskappaleita 'nimi'-kenttään.

Tämän kyselyn tulos on esitetty alla. Se sisältää arvot 'nimi'-kentästä ja niiden lukumäärän NameCount-kentässä arvojen kopioiden mukaan, kuten Cillianilla on 4 kaksoiskappaletta ja niin edelleen.

db.Test.aggregate([ { $ryhmä: { _id: '$name' , NameCount: { $count: {} }, }, }, ])

Esimerkki 04

Voimme käyttää myös sisäkkäisten kenttätietueiden lukumäärän yhdistämistä tiettyjen kenttäarvojen laskemiseen. Tämän tarkentamiseksi olemme luoneet kokoelman nimeltä 'Teacher' ja lisänneet siihen sisäkkäisiä kenttiä 'sub' ja array-tyyppisiä kenttiä 'shift' muiden kenttien ohella: nimi ja palkka. Find()-funktio on näyttänyt tämän kokoelman kaikki viisi tietuetta.

testi> db.Teacher.find({})

Nyt olemme käyttäneet yhdistelmäfunktiota, joka sisältää hakuoperaattorin. Lisäksi $ja-operaattoria on käytetty 'sub'-kentän alikentässä 'math', joka sisältää kaksi eri ehtoa. Lasku on sitten laskettu. Tulos osoittaa, että on kaksi tietuetta, joissa alikentän matematiikka on suurempi kuin 10 ja vähemmän kuin 20 arvoa.

db.Teacher.aggregate( [ { $match: { '$ja' : [ { 'sub.math' : {$gte: 10 }}, { 'sub.math' : {$lte: kaksikymmentä }} ] }}, { $count: 'A-luokka' } ] )

Esimerkki 05

Katsotaanpa viimeistä esimerkkiä havainnollistamaan count()-funktion käyttöä tällä kertaa count-aggregaation sijaan. Joten count()-funktiota on sovellettu 'Teacher'-kokoelman taulukkotyyppiseen kenttään, eli 'shift'. Käyttämällä indeksiä taulukon kenttään indeksillä 2, olemme määrittäneet hakukriteeriksi 'yö'. Se tulostaa '2' merkinnän 'yö' kokonaislukumääränä.

db.Teacher.count({ 'shift.2' : 'yö' })

Hyvin samalla tavalla count()-funktiota voidaan soveltaa myös sisäkkäisiin kenttiin, kuten kokoelman 'Teacher' 'sub'-kentän alikenttään 'phy'. Olemme määrittäneet täsmäytyskriteerit käyttämällä 'lte'-operaattoria, joka ilmaisee arvot alle 14 'phy'-alikentässä. Tämän ohjeen tulos on näyttänyt '2' eli 4 tietuetta, joiden arvo on pienempi kuin 14.

db.Teacher.count( { 'sub.phy' : { $lte: 14 } })

Johtopäätös

Tässä oppaassa on esitelty ja kehitetty MongoDB:n $count-aggregaation käyttöä useiden koodiesimerkkien avulla. Esimerkit sisältävät laskennan yhdistämisen, jolla haetaan tiettyjen arvotietueiden ja kokoelmien kautta olevien kenttätietueiden lukumäärä. Se sisältää myös lukujen yhdistämisen käytön taulukkokentissä ja upotetuissa (sisäkkäisissä) kentissä. Loppujen lopuksi count()-funktioesimerkki on sisällytetty, jotta saadaan ero count-aggregaation ja count-funktion välillä.