Sådan tælles dokumenter med MongoDB Samlet antal

Sadan Taelles Dokumenter Med Mongodb Samlet Antal



Som navnet antyder, skal $count-aggregeringen i MongoDB bruges til at tælle feltposter. En af de populære måder at tælle poster på er at bruge count() metoden. Derudover giver visse aggregeringsoperatører dig mulighed for at tælle poster hentet fra et tidligere trin i den aggregerede pipeline. Inden for denne vejledning i dag vil vi diskutere tællingssammenlægningen af ​​MongoDB ved hjælp af kodeeksempler.

Eksempel 01

For at udføre $count-operationen på felterne i en databasesamling i MongoDB, skal vi have adskillige poster. Derfor oprettede vi en samling ved navn 'Test' og indsatte 12 poster i den samtidigt ved hjælp af insertMany()-funktionen. Nu er registreringerne af denne 'Test'-samling blevet vist på MongoDB-skallen via find()-funktionsforespørgslen. Du kan se, at den har i alt tre felter:_id, navn og score.

test> db.Test.find({})







Nu, for at anvende $count-stadiet på ethvert felt, skal vi bruge MongoDBs aggregerede funktion i 'db'-instruktionen. Den aggregerede funktion består af betingelsessætningen, der ofte bruger $match-operatoren på et bestemt felt, efterfulgt af et nyt felt, der viser det samlede antal opnået fra det angivne betingelsesfelt ved hjælp af $count-operatoren.



I vores tilfælde har vi brugt $match-operatoren til at søge efter de matchende poster for værdien '60' i scorefeltet, mens $count-operatoren er blevet brugt til at tælle det samlede antal hentede poster og vise dem under nyt felt med navnet 'SameScore'. Outputtet for denne forespørgsel har vist et felt 'SameScore' med værdien '2', der indikerer, at der er to poster med 'score'-værdien '60' er 2 i samlingen 'Test'.



db.Test.aggregate([ { $match: { 'score' : 60 } }, { $count: 'Samme Score' } ])

Du kan også bruge $count-sammenlægningen til at tælle andre felter end tal, såsom 'navn'-feltet i testsamlingen. Vi har brugt matchaggregering til at søge efter posten i samlingen, hvor navnefeltet har værdien 'John'. Optællingssammenlægningen har talt det samlede antal matchede registreringer, som er 2.





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

Eksempel 02

Lad os opdatere ovenstående forespørgsel og anvende en anden betingelse for at få forskellige poster. Denne gang vil vi anvende $match-aggregeringen af ​​scorefeltet for at få det samlede antal poster, hvor scorefeltet har en værdi på mindre end 30. Optællingssammenlægningen vil tælle det samlede antal poster og tilføjes til en ny kolonne 'Karakter D.' Udgangen viser resultatet '2' som tælletallet for den matchede værdi.

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

Du kan også bruge $count-sammenlægningen, mens du anvender de logiske operatorer til at udføre mere end 1 betingelse på feltposterne. Derfor er i alt to betingelser blevet anvendt på feltet 'Score' ved hjælp af $and operatoren: gte (større end eller lig med) og lte (mindre end og lig med). Begge betingelser skal være sande for at få resultatet og tælle dets rekorder. Det samlede antal viser, at der er fem poster med de matchende kriterier.



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

{ $count: 'Klasse B' } ])

Eksempel 03

I ovenstående illustrationer har vi brugt optællingssammenlægningen til kun at få antallet af matchede poster for de bestemte feltværdier, såsom en specificeret score eller navn. Aggregeringsmetoden for MongoDB giver dig mulighed for at få tælletallet for alle de poster, der indeholder duplikerede værdier i samlingen.

Til dette skal du bruge $group-sammenlægningen i kommandoen aggregate-funktion som nedenfor. Feltet _id er blevet brugt til at specificere feltet 'navn', som optællingsaggregeringen ville fungere på. Sammen med dette vil det brugerdefinerede NameCount bruge $count-sammenlægningen til at tælle flere dubletter i feltet 'navn'.

Outputtet for denne forespørgsel er blevet vist nedenfor. Den indeholder værdierne fra feltet 'navn' og deres antal i feltet NameCount i henhold til duplikationer af værdier, såsom at Cillian har 4 dubletter og så videre.

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

Eksempel 04

Vi kan også bruge tælleaggregation på indlejrede feltposter til at tælle bestemte feltværdier. For at uddybe dette har vi oprettet en samling ved navn 'Teacher' og tilføjet indlejrede felt 'sub' og array-type felt 'shift' i den sammen med andre felter: navn og løn. Find()-funktionen har vist alle fem poster i denne samling.

test> db.Teacher.find({})

Nu har vi anvendt den aggregerede funktion, der indeholder matchoperatoren. Desuden er $and-operatoren blevet anvendt på underfeltet 'matematik' i feltet 'under', som indeholder to forskellige betingelser. Antallet er derefter beregnet. Outputtet viser, at der er to poster, hvor underfeltets matematik har større end 10 og mindre end 20 værdier.

db.Teacher.aggregate( [ { $match: { '$og' : [ { 'sub.math' : {$gte: 10 }}, { 'sub.math' : {$lte: tyve }} ] }}, { $count: 'Klasse A' } ])

Eksempel 05

Lad os se på det sidste eksempel for at illustrere brugen af ​​count()-funktionen denne gang i stedet for at bruge count-aggregation. Så funktionen count() er blevet anvendt på array-type-feltet i 'Teacher'-samlingen, dvs. 'shift'. Ved at bruge indekserne for array-feltet ved hjælp af indeks 2, har vi specificeret matchningskriterierne som 'nat'. Den udsender '2' som det samlede antal tællinger for indtastningen 'nat'.

db.Teacher.count({ 'skift.2' : 'nat' })

På en meget lignende måde kan count()-funktionen også anvendes på de indlejrede felter, såsom underfeltet 'phy' i feltet 'sub' fra samlingen 'Teacher'. Vi har specificeret matchningskriterierne ved at bruge 'lte'-operatoren, der angiver værdier mindre end 14 i 'phy'-underfeltet. Outputtet af denne instruktion har vist '2', dvs. 4 poster med en værdi mindre end 14.

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

Konklusion

Denne vejledning har demonstreret og uddybet brugen af ​​$count-aggregering af MongoDB med flere kodeeksempler. Eksemplerne inkluderer implikationen af ​​tælleaggregering for at hente tælletallet for specifikke værdiposter og alle feltposter gennem samlingerne. Det inkluderer også brugen af ​​tælleaggregation på matrixfelter og indlejrede (indlejrede) felter. I sidste ende er count() funktionseksemplet inkluderet for at gøre en forskel mellem brugen af ​​count aggregering og count funktionen.