Ako počítať dokumenty pomocou súhrnného počtu MongoDB

Ako Pocitat Dokumenty Pomocou Suhrnneho Poctu Mongodb



Ako už názov napovedá, na počítanie záznamov poľa sa musí použiť agregácia $count v MongoDB. Jedným z populárnych spôsobov počítania záznamov je použitie metódy count(). Okrem toho vám určité operátory agregácie umožňujú počítať záznamy prinesené z predchádzajúcej fázy agregovaného kanála. V rámci tejto príručky dnes budeme diskutovať o agregácii počtu MongoDB pomocou príkladov kódu.

Príklad 01

Na vykonanie operácie $count na poliach kolekcie databázy v MongoDB potrebujeme mať množstvo záznamov. Preto sme vytvorili kolekciu s názvom „Test“ a vložili sme do nej súčasne 12 záznamov pomocou funkcie insertMany(). Teraz sa záznamy tejto kolekcie „Test“ zobrazili v prostredí MongoDB prostredníctvom dotazu funkcie find(). Môžete vidieť, že má celkovo tri polia: _id, name a score.

test> db.Test.find({})







Teraz, aby sme mohli použiť fázu $count na akékoľvek pole, musíme použiť agregovanú funkciu MongoDB v rámci inštrukcie „db“. Súhrnná funkcia pozostáva z príkazu podmienky, ktorý často používa operátor $match na konkrétnom poli, za ktorým nasleduje nové pole, ktoré zobrazuje celkový počet získaný zo zadaného poľa podmienky pomocou operátora $count.



V našom prípade sme použili operátor $match na vyhľadávanie zodpovedajúcich záznamov pre hodnotu „60“ v poli skóre, zatiaľ čo operátor $count bol použitý na sčítanie celkového počtu získaných záznamov a ich zobrazenie pod nové pole s názvom „SameScore“. Výstup pre tento dotaz zobrazuje pole „SameScore“ s hodnotou „2“, čo naznačuje, že existujú dva záznamy s hodnotou „60“ a hodnotou 2 v kolekcii „Test“.



db.Test.aggregate([ { $zhoda: { 'skóre' : 60 } }, { $počet: 'SameScore' } ])

Agregáciu $count môžete použiť aj na počítanie polí iných ako čísla, ako je napríklad pole „name“ kolekcie Test. Na vyhľadávanie záznamu v kolekcii, kde má pole mena hodnotu „John“, používame agregáciu zhôd. Agregácia počtu úspešne spočítala celkový počet zhodných záznamov, čo sú 2.





db.Test.aggregate([ { $zhoda: { 'názov' : 'John' } }, { $počet: 'Rovnaké meno' } ])

Príklad 02

Aktualizujme vyššie uvedený dotaz a aplikujme inú podmienku na získanie iných záznamov. Tentoraz použijeme $match agregáciu v poli skóre, aby sme získali celkový počet záznamov, kde má pole skóre hodnotu menšiu ako 30. Agregácia počtu bude počítať celkový počet záznamov a pridávať do nového stĺpec „Stupeň D.“ Na výstupe sa zobrazí výsledok „2“ ako počet pre zhodnú hodnotu.

db.Test.aggregate( [ { $zhoda: { skóre: { $lt: 30 } } }, { $počet: 'známkou' } ] )

Agregáciu $count môžete použiť aj pri použití logických operátorov na vykonanie viac ako 1 podmienky v záznamoch poľa. Preto boli na pole „Skóre“ s použitím operátora $and aplikované celkom dve podmienky: gte (väčšie alebo rovné) a lte (menšie ako a rovné). Obe podmienky musia byť splnené, aby ste získali výsledok a spočítali jeho záznamy. Celkový počet ukazuje, že existuje päť záznamov so zodpovedajúcimi kritériami.



db.Test.aggregate( [ { $zhoda: { '$and' : [ { 'skóre' : {$gte: 60 }}, { 'skóre' : {$lte: 80 }} ] }},

{ $count: 'Stupeň B' } ] )

Príklad 03

Vo vyššie uvedených ilustráciách sme použili agregáciu počtu, aby sme získali iba počet zhodných záznamov pre konkrétne hodnoty poľa, ako je zadané skóre alebo názov. Metóda agregácie MongoDB vám umožňuje získať počet všetkých záznamov obsahujúcich duplicitné hodnoty v kolekcii.

Na to musíte použiť agregáciu $ group v rámci príkazu agregovanej funkcie, ako je uvedené nižšie. Pole _id sa použilo na zadanie poľa „názov“, na ktorom bude fungovať agregácia počtu. Spolu s tým bude užívateľom definované pole NameCount využívať agregáciu $count na počítanie niekoľkých duplikátov v poli „name“.

Výstup pre tento dotaz je zobrazený nižšie. Obsahuje hodnoty z poľa „name“ a ich počet v rámci poľa NameCount podľa duplikácií hodnôt, ako napríklad Cillian má 4 duplikáty atď.

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

Príklad 04

Môžeme tiež použiť agregáciu počtu na vnorených záznamoch polí na počítanie konkrétnych hodnôt polí. Aby sme to vysvetlili, vytvorili sme kolekciu s názvom „Učiteľ“ a pridali sme do nej vnorené pole „sub“ a pole typu „shift“ spolu s ďalšími poľami: meno a platba. Funkcia find() zobrazuje všetkých päť záznamov tejto kolekcie.

test> db.Teacher.find({})

Teraz sme použili agregovanú funkciu obsahujúcu operátor zhody. Operátor $and bol použitý aj na podpole „math“ v poli „sub“, ktoré obsahuje dve rôzne podmienky. Potom sa vypočítal počet. Výstup ukazuje, že existujú dva záznamy, v ktorých má podpole matematika viac ako 10 a menej ako 20 hodnôt.

db.Teacher.aggregate( [ { $zhoda: { '$and' : [ { 'sub.math' : {$gte: 10 }}, { 'sub.math' : {$lte: dvadsať }} ] }}, { $count: 'trieda A' } ] )

Príklad 05

Pozrime sa na posledný príklad na ilustráciu použitia funkcie count() tentoraz namiesto použitia agregácie počtu. Takže funkcia count() bola aplikovaná na pole typu poľa kolekcie „Učiteľ“, t. j. „shift“. Pomocou indexov pre pole poľa pomocou indexu 2 sme určili kritériá zhody ako „noc“. Vypíše „2“ ako celkový počet impulzov pre záznam „noc“.

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

Veľmi podobným spôsobom možno funkciu count() použiť aj na vnorené polia, ako je podpole „phy“ v poli „sub“ z kolekcie „Učiteľ“. Kritériá zhody sme špecifikovali pomocou operátora „lte“, ktorý v podpoli „phy“ uvádza hodnoty menšie ako 14. Na výstupe tejto inštrukcie bolo zobrazené „2“, t.j. 4 záznamy s hodnotou menšou ako 14.

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

Záver

Táto príručka demonštruje a rozpracúva používanie agregácie $count z MongoDB s niekoľkými príkladmi kódu. Príklady zahŕňajú implikáciu agregácie počtu na získanie čísla počtu pre špecifické záznamy hodnôt a všetky záznamy poľa prostredníctvom kolekcií. Zahŕňa tiež použitie agregácie počtu na poliach poľa a vložených (vnorených) poliach. Nakoniec bol zahrnutý príklad funkcie count(), aby sa urobil rozdiel medzi použitím agregácie počtu a funkciou count.