Kaip suskaičiuoti dokumentus naudojant „MongoDB“ bendrą skaičių

Kaip Suskaiciuoti Dokumentus Naudojant Mongodb Bendra Skaiciu



Kaip rodo pavadinimas, $count agregacija MongoDB turi būti naudojama lauko įrašams skaičiuoti. Vienas iš populiariausių būdų skaičiuoti įrašus yra naudoti count() metodą. Be to, tam tikri agregavimo operatoriai leidžia skaičiuoti įrašus, įvestus iš ankstesnio agregato dujotiekio etapo. Šiame vadove šiandien aptarsime MongoDB skaičiavimo agregavimą naudodami kodų pavyzdžius.

01 pavyzdys

Norėdami atlikti $count operaciją MongoDB duomenų bazės kolekcijos laukuose, turime turėti daugybę įrašų. Todėl sukūrėme kolekciją pavadinimu „Test“ ir vienu metu įterpėme į ją 12 įrašų naudodami funkciją insertMany (). Dabar šios „Test“ kolekcijos įrašai buvo rodomi „MongoDB“ apvalkale naudojant „found()“ funkcijos užklausą. Matote, kad iš viso yra trys laukai:_id, pavadinimas ir balas.

testas> db.Test.find({})







Dabar, norėdami pritaikyti $ count etapą bet kuriame lauke, turime naudoti MongoDB agregavimo funkciją „db“ instrukcijoje. Sumavimo funkciją sudaro sąlygos sakinys, dažnai naudojant $match operatorių konkrečiame lauke, po kurio seka naujas laukas, kuriame rodomas bendras skaičius, gautas iš nurodyto sąlygos lauko naudojant operatorių $count.



Mūsų atveju naudojome operatorių $match, kad ieškotume atitinkančių įrašų, atitinkančių reikšmę „60“ balo lauke, o operatorius $count buvo naudojamas bendram gautų įrašų skaičiui suskaičiuoti ir rodyti juos po laukelyje. naujas laukas pavadinimu „SameScore“. Šios užklausos išvestyje buvo rodomas laukas „SameScore“ su reikšme „2“, nurodantis, kad rinkinyje „Test“ yra du įrašai, kurių „score“ reikšmė „60“ yra 2.



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

Taip pat galite naudoti $count agregaciją, kad suskaičiuotumėte kitus laukus nei skaičiai, pvz., testų rinkinio lauką „pavadinimas“. Naudojome atitikčių apibendrinimą, norėdami ieškoti įrašo rinkinyje, kuriame pavadinimo laukas turi reikšmę „Jonas“. Skaičių agregatas sėkmingai suskaičiavo bendrą atitikusių įrašų skaičių, kuris yra 2.





db.Test.aggregate([ { $match: { 'vardas' : 'Jonas' } }, { $count: 'Toks pat vardas' } ])

02 pavyzdys

Atnaujinkime aukščiau pateiktą užklausą ir pritaikykime kitą sąlygą, kad gautume skirtingus įrašus. Šį kartą mes taikysime rezultatų lauko $match agregaciją, kad gautume bendrą įrašų skaičių, kai balo lauko reikšmė mažesnė nei 30. Skaičių sumavimas skaičiuos bendrą įrašų skaičių ir pridės prie naujo stulpelyje „GradeD“. Išvestis rodo rezultatą „2“ kaip suderintos vertės skaičių.

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

Taip pat galite naudoti $count agregaciją taikydami loginius operatorius, kad lauko įrašuose atliktumėte daugiau nei 1 sąlygą. Todėl laukui „Tautas“, naudojant operatorių $and, buvo taikomos dvi sąlygos: gte (didesnis nei arba lygus) ir lte (mažesnis nei ir lygus). Norint gauti rezultatą ir suskaičiuoti jo įrašus, turi būti teisingos abi sąlygos. Bendras skaičius rodo, kad yra penki įrašai su atitikties kriterijais.



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

{ $count: 'B klasė' } ] )

03 pavyzdys

Aukščiau pateiktose iliustracijose naudojome skaičių apibendrinimą, kad gautume tik atitinkamų įrašų skaičių pagal konkrečias lauko vertes, pvz., nurodytą balą ar pavadinimą. MongoDB agregavimo metodas leidžia gauti visų kolekcijoje esančių įrašų, kuriuose yra pasikartojančių reikšmių, skaičių.

Norėdami tai padaryti, agregate funkcijos komandoje turite naudoti $group agregaciją, kaip nurodyta toliau. Laukas _id buvo naudojamas norint nurodyti lauką „pavadinimas“, kuriame veiktų skaičiavimo agregavimas. Be to, vartotojo nustatytas laukas NameCount naudos $count agregaciją, kad suskaičiuotų kelis dublikatus lauke „name“.

Šios užklausos išvestis rodoma žemiau. Jame yra reikšmės iš lauko „pavadinimas“ ir jų skaičiaus skaičius lauke NameCount pagal reikšmių dubliavimą, pvz., „Cillian“ turi 4 dublikatus ir pan.

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

04 pavyzdys

Taip pat galime naudoti įdėtųjų laukų įrašų skaičių agregaciją, kad suskaičiuotume tam tikras lauko reikšmes. Norėdami tai paaiškinti, sukūrėme kolekciją pavadinimu „Mokytojas“ ir įtraukėme įdėtą lauką „sub“ ir masyvo tipo lauką „shift“ kartu su kitais laukais: vardas ir atlyginimas. Funkcija find() rodo visus penkis šios kolekcijos įrašus.

testas> db.Teacher.find({})

Dabar pritaikėme agregavimo funkciją, kurioje yra atitikties operatorius. Be to, „$and“ operatorius buvo pritaikytas „sub“ lauko polaukiui „matematika“, kuriame yra dvi skirtingos sąlygos. Tada skaičius buvo apskaičiuotas. Išvestis rodo, kad yra du įrašai, kuriuose matematikos polaukio reikšmė yra didesnė nei 10 ir mažesnė nei 20.

db.Teacher.aggregate( [ { $match: { '$ ir' : [ { 'sub.matematika' : {$gte: 10 }}, { 'sub.matematika' : {$lte: dvidešimt }} ] }}, { $count: 'A klasė' } ] )

05 pavyzdys

Pažiūrėkime į paskutinį pavyzdį, kad iliustruotume naudojant funkciją count() šį kartą, o ne skaičiavimo agregaciją. Taigi, funkcija count () buvo pritaikyta rinkinio „Mokytojas“ masyvo tipo laukui, ty „shift“. Naudodami masyvo lauko indeksus naudodami indeksą 2, atitikimo kriterijus nurodėme kaip „naktį“. Išveda „2“ kaip bendrą įrašo „naktis“ skaičių.

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

Labai panašiai funkcija count() taip pat gali būti taikoma įdėtiems laukams, pvz., „sub“ lauko polaukiui „phy“ iš rinkinio „Teacher“. Atitikimo kriterijus nurodėme naudodami operatorių „lte“, nurodantį mažesnes nei 14 reikšmes „phy“ polaukyje. Šios instrukcijos išvestis rodo „2“, ty 4 įrašus, kurių reikšmė mažesnė nei 14.

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

Išvada

Šiame vadove demonstruojamas ir detalizuojamas MongoDB $count agregavimo naudojimas su keliais kodo pavyzdžiais. Pavyzdžiai apima skaičių sumavimo reikšmę, kad būtų galima gauti konkrečių reikšmių įrašų ir visų rinkinių lauko įrašų skaičių. Be to, masyvo laukuose ir įterptuosiuose (įdėtuosiuose) laukuose naudojamas skaičiavimų agregavimas. Pabaigoje buvo įtrauktas funkcijos count() pavyzdys, kad būtų galima atskirti skaičių agregavimo ir skaičiavimo funkcijos naudojimą.