Kako prešteti dokumente z MongoDB Aggregate Count

Kako Presteti Dokumente Z Mongodb Aggregate Count



Kot že ime pove, je treba združevanje $count v MongoDB uporabiti za štetje zapisov polj. Eden od priljubljenih načinov štetja zapisov je uporaba metode count(). Poleg tega vam nekateri operaterji združevanja omogočajo štetje zapisov, prinesenih iz predhodne stopnje zbiralnega cevovoda. V današnjem vodniku bomo razpravljali o združevanju števila MongoDB z uporabo primerov kode.

Primer 01

Za izvedbo operacije $count na poljih zbirke podatkov v MongoDB moramo imeti številne zapise. Zato smo ustvarili zbirko z imenom »Test« in vanjo s funkcijo insertMany() hkrati vstavili 12 zapisov. Zdaj so bili zapisi te zbirke »Test« prikazani na lupini MongoDB prek poizvedbe funkcije find(). Vidite lahko, da ima skupno tri polja: _id, ime in rezultat.

test> db.Test.find({})







Zdaj, da uporabimo stopnjo $count na katerem koli polju, moramo uporabiti agregatno funkcijo MongoDB v navodilu 'db'. Združevalna funkcija je sestavljena iz izjave o pogoju, ki pogosto uporablja operator $match za določeno polje, ki mu sledi novo polje, ki prikazuje skupno število, pridobljeno iz podanega polja s pogojem z uporabo operatorja $count.



V našem primeru smo uporabili operator $match za iskanje ujemajočih se zapisov za vrednost »60« v polju rezultata, medtem ko je bil operator $count uporabljen za štetje skupnega števila pridobljenih zapisov in njihov prikaz pod novo polje z imenom »SameScore«. Izhod za to poizvedbo prikazuje polje »SameScore« z vrednostjo »2«, ki kaže, da obstajata dva zapisa z vrednostjo »ocena« »60« je 2 v zbirki »Test«.



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

Združevanje $count lahko uporabite tudi za štetje polj, ki niso številke, kot je polje »ime« testne zbirke. Za iskanje zapisa v zbirki, kjer ima polje z imenom vrednost »John«, uporabljamo združevanje ujemanja. Združevanje štetja je uspešno preštelo skupno število ujemajočih se zapisov, ki je 2.





db.Test.aggregate([ { $match: { 'ime' : 'Janez' } }, { $count: 'Isto ime' } ])

Primer 02

Posodobimo zgornjo poizvedbo in uporabimo drug pogoj, da dobimo drugačne zapise. Tokrat bomo uporabili združevanje $match polja rezultatov, da dobimo skupno število zapisov, kjer ima polje rezultatov vrednost manjšo od 30. Združevanje štetja bo preštelo skupno število zapisov in dodalo novemu stolpec »Razred D.« Izhod prikazuje rezultat »2« kot število štetja za ujemajočo se vrednost.

db.Test.aggregate( [ { $match: { rezultat: { $lt: 30 } } }, { $count: 'Razred D' }])

Združevanje $count lahko uporabite tudi med uporabo logičnih operatorjev za izvedbo več kot 1 pogoja na zapisih polja. Zato sta bila za polje »Ocena« uporabljena skupaj dva pogoja z uporabo operatorja $and: gte (večje ali enako) in lte (manjše in enako). Za pridobitev rezultata in štetje njegovih zapisov morata biti izpolnjena oba pogoja. Skupno število kaže, da obstaja pet zapisov z ujemajočimi se merili.



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

{ $count: 'Razred B' }])

Primer 03

V zgornjih ilustracijah smo uporabili združevanje štetja, da bi dobili samo število ujemajočih se zapisov za posamezne vrednosti polja, kot je določen rezultat ali ime. Metoda združevanja MongoDB vam omogoča, da dobite število vseh zapisov, ki vsebujejo podvojene vrednosti v zbirki.

Za to morate uporabiti združevanje $group znotraj ukaza agregatne funkcije, kot je prikazano spodaj. Polje _id je bilo uporabljeno za določitev polja »ime«, na katerem bi delovalo združevanje štetja. Poleg tega bo uporabniško definirano polje NameCount uporabilo združevanje $count za štetje več dvojnikov v polju »ime«.

Izhod za to poizvedbo je prikazan spodaj. Vsebuje vrednosti iz polja »ime« in njihovo število v polju NameCount glede na podvojitve vrednosti, na primer, da ima Cillian 4 dvojnike itd.

db.Test.aggregate([ { $group: { _id: '$name' , Število imen: { $štetje: {} }, }, }, ])

Primer 04

Za štetje določenih vrednosti polj lahko uporabimo tudi združevanje štetja na zapisih ugnezdenih polj. Da bi to podrobneje pojasnili, smo ustvarili zbirko z imenom »Učitelj« in vanjo dodali ugnezdeno polje »sub« in polje vrste polja »shift« skupaj z drugimi polji: ime in plačilo. Funkcija find() prikazuje vseh pet zapisov te zbirke.

test> db.Teacher.find({})

Zdaj smo uporabili agregatno funkcijo, ki vsebuje operator ujemanja. Poleg tega je bil operator $and uporabljen za podpolje »math« polja »sub«, ki vsebuje dva različna pogoja. Štetje je bilo nato izračunano. Izhod kaže, da obstajata dva zapisa, kjer ima podpolje matematika več kot 10 in manj kot 20 vrednosti.

db.Teacher.aggregate( [ { $match: { '$in' : [ { 'podmatematika' : {$gte: 10 }}, { 'podmatematika' : {$lte: dvajset }} ] }}, { $count: 'Razred A' }])

Primer 05

Oglejmo si zadnji primer za ponazoritev uporabe funkcije count() tokrat namesto uporabe združevanja štetja. Funkcija count() je bila torej uporabljena za polje matričnega tipa zbirke »Učitelj«, tj. »shift«. Z uporabo indeksov za matrično polje z uporabo indeksa 2 smo merilo ujemanja določili kot »noč«. Izpiše »2« kot skupno število štetij za vnos »noč«.

db.Teacher.count({ 'shift.2' : 'noč' })

Na zelo podoben način lahko funkcijo count() uporabimo tudi za ugnezdena polja, kot je podpolje 'phy' polja 'sub' iz zbirke 'Učitelj'. Merila ujemanja smo določili z uporabo operatorja »lte«, ki v podpolju »phy« označuje vrednosti, manjše od 14. Izhod tega ukaza prikazuje »2«, tj. 4 zapise z vrednostjo, manjšo od 14.

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

Zaključek

Ta vodnik prikazuje in podrobneje opisuje uporabo združevanja $count MongoDB z več primeri kode. Primeri vključujejo implikacijo združevanja štetja za pridobivanje števila štetja za specifične zapise vrednosti in vse zapise polja skozi zbirke. Vključuje tudi uporabo združevanja števila na poljih matrik in vdelanih (gnezdenih) poljih. Na koncu je bil vključen primer funkcije count(), da bi naredili razliko med uporabo združevanja štetja in funkcijo štetja.