Com comptar documents amb el recompte agregat de MongoDB

Com Comptar Documents Amb El Recompte Agregat De Mongodb



Com el seu nom indica, l'agregació $count a MongoDB s'ha d'utilitzar per comptar registres de camp. Una de les maneres populars de comptar registres és utilitzar el mètode count(). A més, certs operadors d'agregació us permeten comptar els registres introduïts des d'una etapa anterior de la canalització d'agregació. Dins d'aquesta guia avui, parlarem de l'agregació de recomptes de MongoDB mitjançant exemples de codi.

Exemple 01

Per realitzar l'operació $count als camps d'una col·lecció de bases de dades a MongoDB, hem de tenir nombrosos registres. Per tant, vam crear una col·lecció anomenada 'Prova' i hi vam inserir 12 registres simultàniament mitjançant la funció insertMany(). Ara, els registres d'aquesta col·lecció 'Test' s'han mostrat a l'intèrpret d'ordres de MongoDB mitjançant la consulta de la funció find(). Podeu veure que té un total de tres camps:_id, nom i puntuació.

prova> db.Test.find({})







Ara, per aplicar l'etapa $count a qualsevol camp, hem d'utilitzar la funció d'agregació de MongoDB dins de la instrucció 'db'. La funció d'agregació consisteix en la declaració de condició, sovint utilitzant l'operador $match en un camp específic, seguit d'un camp nou que mostra el recompte total obtingut del camp de condició especificat mitjançant l'operador $count.



En el nostre cas, hem fet servir l'operador $match per cercar els registres que coincideixen amb el valor '60' al camp de puntuació, mentre que l'operador $count s'ha utilitzat per comptar el nombre total de registres obtinguts i mostrar-los sota el nou camp anomenat 'SameScore'. La sortida d'aquesta consulta ha estat mostrant un camp 'SameScore' amb el valor '2' que indica que hi ha dos registres amb el valor de 'puntuació' '60' és 2 a la col·lecció 'Prova'.



db.Test.aggregate([ { $match: { 'puntuació' : 60 } }, { $count: 'Maixa puntuació' } ])

També podeu utilitzar l'agregació $count per comptar els camps diferents dels números, com ara el camp 'nom' de la col·lecció Test. Hem estat utilitzant l'agregació de coincidències per cercar el registre de la col·lecció on el camp del nom té el valor 'John'. L'agregació de recomptes ha comptat correctament el nombre total de registres coincidents, que és 2.





db.Test.aggregate([ { $match: { 'nom' : 'Joan' } }, { $count: 'Mateix nom' } ])

Exemple 02

Actualitzem la consulta anterior i apliquem una altra condició per obtenir registres diferents. Aquesta vegada, aplicarem l'agregació $match del camp de puntuació per obtenir el recompte total de registres on el camp de puntuació tingui un valor inferior a 30. L'agregació del recompte comptarà el nombre total de registres i s'afegirà a un nou columna 'GradeD'. La sortida mostra el resultat '2' com a número de recompte per al valor coincident.

db.Test.aggregate( [ { $match: { puntuació: { $lt: 30 } } }, { $count: 'Grau D' } ] )

També podeu utilitzar l'agregació $count mentre apliqueu els operadors lògics per dur a terme més d'1 condició als registres de camp. Per tant, s'han aplicat un total de dues condicions al camp 'Puntuació' mitjançant l'operador $and: gte (mayor que o igual a) i lte (menor que i igual a). Ambdues condicions han de ser certes per obtenir el resultat i comptar els seus registres. El recompte total mostra que hi ha cinc registres amb els criteris de concordança.



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

{$count: 'Grau B' } ] )

Exemple 03

A les il·lustracions anteriors, hem utilitzat l'agregació de recomptes per obtenir només el nombre de registres coincidents per als valors de camp concrets, com ara una puntuació o un nom especificats. El mètode d'agregació de MongoDB us permet obtenir el nombre de recompte de tots els registres que contenen valors duplicats a la col·lecció.

Per a això, heu d'utilitzar l'agregació $group dins de l'ordre de funció d'agregació, com a continuació. El camp _id s'ha utilitzat per especificar el camp 'nom' en el qual funcionaria l'agregació del recompte. Juntament amb això, el camp definit per l'usuari NameCount utilitzarà l'agregació $count per comptar diversos duplicats al camp 'nom'.

La sortida d'aquesta consulta s'ha mostrat a continuació. Conté els valors del camp 'nom' i el seu número de recompte dins del camp NameCount segons duplicacions de valors, com ara que Cillian té 4 duplicats, etc.

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

Exemple 04

També podem utilitzar l'agregació de recomptes en registres de camp imbricats per comptar valors de camp concrets. Per aprofundir en això, hem creat una col·lecció anomenada 'Professor' i hem afegit un camp imbricat 'sub' i un camp de tipus matriu 'shift' juntament amb altres camps: nom i pagament. La funció find() ha estat mostrant els cinc registres d'aquesta col·lecció.

prova> db.Teacher.find({})

Ara, hem aplicat la funció d'agregació que conté l'operador de concordança. A més, l'operador $i s'ha aplicat al subcamp 'matemàtiques' del camp 'sub', que conté dues condicions diferents. Després s'ha calculat el recompte. La sortida mostra que hi ha dos registres on el subcamp matemàtic té valors superiors a 10 i inferiors a 20.

db.Teacher.aggregate( [ { $match: { '$i' : [ { 'sub.matemàtiques' : {$gte: 10 }}, { 'sub.matemàtiques' : {$lte: 20 }} ] }}, { $count: 'Grau A' } ] )

Exemple 05

Vegem l'últim exemple per il·lustrar l'ús de la funció count() aquesta vegada en comptes d'utilitzar l'agregació de recompte. Per tant, la funció count() s'ha aplicat al camp de tipus matriu de la col·lecció 'Professor', és a dir, 'shift'. Utilitzant els índexs per al camp de matriu amb l'índex 2, hem especificat els criteris de concordança com a 'nit'. Emet '2' com el nombre total de recomptes per a l'entrada 'nit'.

db.Teacher.count({ 'canvi.2' : 'nit' })

De manera molt semblant, la funció count() també es pot aplicar als camps imbricats, com ara el subcamp 'phy' del camp 'sub' de la col·lecció 'Teacher'. Hem especificat els criteris de concordança mitjançant l'operador 'lte' indicant valors inferiors a 14 al subcamp 'phy'. La sortida d'aquesta instrucció ha estat mostrant '2', és a dir, 4 registres amb un valor inferior a 14.

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

Conclusió

Aquesta guia ha estat demostrant i elaborant l'ús de l'agregació $count de MongoDB amb diversos exemples de codi. Els exemples inclouen la implicació de l'agregació de recomptes per obtenir el número de recompte per a registres de valors específics i tots els registres de camp a través de les col·leccions. A més, inclou l'ús de l'agregació de recomptes en camps de matriu i camps incrustats (nidats). Al final, s'ha inclòs l'exemple de la funció count() per fer una diferència entre l'ús de l'agregació de recompte i la funció de recompte.