Kako brojati dokumente s MongoDB agregatnim brojanjem

Kako Brojati Dokumente S Mongodb Agregatnim Brojanjem



Kao što ime sugerira, agregacija $count u MongoDB-u mora se koristiti za brojanje zapisa polja. Jedan od popularnih načina brojanja zapisa je korištenje metode count(). Osim toga, određeni operatori združivanja omogućuju vam brojanje zapisa donesenih iz prethodne faze agregatnog cjevovoda. U ovom današnjem vodiču raspravljat ćemo o agregaciji broja MongoDB koristeći primjere koda.

Primjer 01

Da bismo izvršili operaciju $count na poljima zbirke baze podataka u MongoDB-u, moramo imati brojne zapise. Stoga smo stvorili kolekciju pod nazivom 'Test' i umetnuli 12 zapisa u nju istovremeno pomoću funkcije insertMany(). Sada su zapisi ove zbirke 'Test' prikazani na MongoDB ljusci putem upita funkcije find(). Možete vidjeti da ima ukupno tri polja: _id, ime i rezultat.

test> db.Test.find({})







Sada, da bismo primijenili stupanj $count na bilo kojem polju, moramo koristiti MongoDB-ovu agregatnu funkciju unutar instrukcije 'db'. Skupna funkcija sastoji se od iskaza uvjeta, koji često koristi operator $match na određenom polju, nakon čega slijedi novo polje koje prikazuje ukupni broj dobiven iz navedenog polja uvjeta pomoću operatora $count.



U našem slučaju koristili smo operator $match za traženje podudarnih zapisa za vrijednost '60' u polju rezultata, dok je operator $count korišten za brojanje ukupnog broja dohvaćenih zapisa i njihovo prikazivanje pod novo polje pod nazivom 'SameScore'. Izlaz za ovaj upit prikazuje polje 'SameScore' s vrijednošću '2' što ukazuje da postoje dva zapisa s 'rezultatom' vrijednošću '60' je 2 u kolekciji 'Test'.



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

Također možete koristiti agregaciju $count za brojanje polja koja nisu brojevi, kao što je polje 'name' zbirke testova. Koristili smo agregaciju podudaranja za traženje zapisa u zbirci gdje polje imena ima vrijednost 'John'. Skupljanje brojanja uspješno je prebrojalo ukupan broj podudarnih zapisa koji je 2.





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

Primjer 02

Ažurirajmo gornji upit i primijenimo drugi uvjet da bismo dobili različite zapise. Ovaj put ćemo primijeniti agregaciju $match polja rezultata kako bismo dobili ukupan broj zapisa gdje polje rezultata ima vrijednost manju od 30. Agregacija broja će brojati ukupan broj zapisa i dodavati novom stupac 'OcjenaD.' Izlaz prikazuje rezultat '2' kao broj brojača za podudarnu vrijednost.

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

Također možete koristiti $count agregaciju dok primjenjujete logičke operatore za izvođenje više od 1 uvjeta na zapisima polja. Stoga su ukupno dva uvjeta primijenjena na polje 'Ocjena' pomoću operatora $and: gte (veće od ili jednako) i lte (manje od i jednako). Oba uvjeta moraju biti istinita da bi se dobio rezultat i prebrojali njegovi zapisi. Ukupan broj pokazuje da postoji pet zapisa s odgovarajućim kriterijima.



db.Test.aggregate( [ { $match: { '$i' : [ { 'postići' : {$gte: 60 }}, { 'postići' : {$lte: 80 }} ] }},

{ $count: 'Razred B' } ])

Primjer 03

U gornjim smo ilustracijama koristili agregaciju brojanja kako bismo dobili samo broj podudarnih zapisa za određene vrijednosti polja, kao što je određeni rezultat ili naziv. Metoda agregacije MongoDB-a omogućuje vam dobivanje broja svih zapisa koji sadrže duplicirane vrijednosti u zbirci.

Za ovo morate upotrijebiti agregaciju $group unutar naredbe funkcije aggregate, kao u nastavku. Polje _id korišteno je za određivanje polja 'name' na kojem bi radila agregacija brojanja. Uz to, korisnički definirano polje NameCount koristit će agregaciju $count za brojanje nekoliko duplikata u polju 'name'.

Ispod je prikazan rezultat za ovaj upit. Sadrži vrijednosti iz polja 'name' i njihov broj u polju NameCount prema duplikatima vrijednosti, kao što je Cillian koji ima 4 duplikata i tako dalje.

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

Primjer 04

Također možemo koristiti agregaciju brojanja na ugniježđenim zapisima polja za brojanje određenih vrijednosti polja. Da bismo to razradili, stvorili smo zbirku pod nazivom 'Učitelj' i dodali ugniježđeno polje 'sub' i polje vrste polja 'shift' unutar nje zajedno s drugim poljima: ime i plaća. Funkcija find() prikazuje svih pet zapisa ove zbirke.

test> db.Teacher.find({})

Sada smo primijenili agregatnu funkciju koja sadrži operator podudaranja. Također, operator $and primijenjen je na potpolje 'math' polja 'sub', koje sadrži dva različita uvjeta. Tada je izračunat broj. Izlaz pokazuje da postoje dva zapisa u kojima potpolje math ima više od 10 i manje od 20 vrijednosti.

db.Teacher.aggregate( [ { $match: { '$i' : [ { 'podmatematika' : {$gte: 10 }}, { 'podmatematika' : {$lte: dvadeset }} ] }}, { $count: 'Ocjena A' } ])

Primjer 05

Pogledajmo posljednji primjer za ilustraciju upotrebe funkcije count() ovaj put umjesto upotrebe agregacije brojanja. Dakle, funkcija count() primijenjena je na polje tipa niza zbirke 'Učitelj', tj. 'shift'. Koristeći indekse za polje polja pomoću indeksa 2, naveli smo kriterij podudaranja kao 'noć'. Ispisuje '2' kao ukupni broj brojanja za unos 'noć'.

db.Teacher.count({ 'pomak.2' : 'noć' })

Na vrlo sličan način, funkcija count() također se može primijeniti na ugniježđena polja, kao što je potpolje “phy” polja “sub” iz kolekcije “Teacher”. Odredili smo kriterije podudaranja pomoću operatora 'lte' koji pokazuje vrijednosti manje od 14 u potpolju 'phy'. Izlaz ove instrukcije prikazuje '2', tj. 4 zapisa s vrijednošću manjom od 14.

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

Zaključak

Ovaj vodič demonstrira i razrađuje korištenje $count agregacije MongoDB-a s nekoliko primjera koda. Primjeri uključuju implikaciju agregacije brojanja za dohvaćanje broja brojača za specifične zapise vrijednosti i sve zapise polja kroz zbirke. Također, uključuje korištenje agregacije brojanja na poljima niza i ugrađenim (ugniježđenim) poljima. Na kraju je uključen primjer funkcije count() kako bi se napravila razlika između upotrebe agregacije brojanja i funkcije brojanja.