Cómo contar documentos con el recuento agregado de MongoDB

Como Contar Documentos Con El Recuento Agregado De Mongodb



Como sugiere el nombre, la agregación $count en MongoDB debe utilizarse para contar registros de campo. Una de las formas populares de contar registros es utilizar el método count(). Además, ciertos operadores de agregación le permiten contar los registros traídos de una etapa anterior del proceso de agregación. En esta guía de hoy, analizaremos la agregación de recuentos de MongoDB utilizando ejemplos de código.

Ejemplo 01

Para realizar la operación $count en los campos de una colección de base de datos en MongoDB, necesitamos tener numerosos registros. Por lo tanto, creamos una colección llamada 'Prueba' e insertamos 12 registros en ella simultáneamente usando la función insertMany(). Ahora, los registros de esta colección de 'Prueba' se muestran en el shell de MongoDB mediante la consulta de la función find(). Puedes ver que tiene un total de tres campos:_id, nombre y puntuación.

prueba> db.Test.find({})







Ahora, para aplicar la etapa $count en cualquier campo, debemos usar la función agregada de MongoDB dentro de la instrucción 'db'. La función agregada consta de la declaración de condición, que a menudo utiliza el operador $match en un campo específico, seguida de un nuevo campo que muestra el recuento total obtenido del campo de condición especificado utilizando el operador $count.



En nuestro caso, hemos estado empleando el operador $match para buscar los registros coincidentes para el valor '60' en el campo de puntuación, mientras que el operador $count se ha utilizado para contar el número total de registros obtenidos y mostrarlos bajo el nuevo campo llamado “SameScore”. El resultado de esta consulta muestra un campo 'SameScore' con el valor '2' que indica que hay dos registros con el valor '60' de 'puntuación' es 2 en la colección 'Prueba'.



db.Test.aggregate([ { $coincidencia: { 'puntaje' : 60 } }, { $cuenta: 'Mismo puntaje' } ])

También puede utilizar la agregación $count para contar los campos que no sean números, como el campo 'nombre' de la colección de prueba. Hemos estado utilizando la agregación de coincidencias para buscar el registro en la colección donde el campo de nombre tiene el valor 'John'. La agregación de recuento ha contado con éxito el número total de registros coincidentes, que es 2.





db.Test.aggregate([ { $coincidencia: { 'nombre' : 'John' } }, { $cuenta: 'Mismo nombre' } ])

Ejemplo 02

Actualicemos la consulta anterior y apliquemos otra condición para obtener registros diferentes. Esta vez, aplicaremos la agregación $match del campo de puntuación para obtener el recuento total de registros donde el campo de puntuación tiene un valor inferior a 30. La agregación de recuento contará el número total de registros y los agregará a un nuevo columna “Calificación D”. La salida muestra el resultado '2' como el número de recuento del valor coincidente.

db.Test.aggregate( [ { $partido: { puntuación: { $lt: 30 } } }, { $cuenta: 'Calificación D' } ] )

También puede utilizar la agregación $count mientras aplica los operadores lógicos para realizar más de una condición en los registros de campo. Por tanto, se han aplicado un total de dos condiciones al campo “Puntuación” utilizando el operador $and: gte (mayor o igual que) y lte (menor que e igual a). Ambas condiciones deben ser verdaderas para obtener el resultado y contar sus registros. El recuento total muestra que hay cinco registros que coinciden con los criterios.



db.Test.aggregate( [ { $coincidencia: { '$y' : [ { 'puntaje' : {$gte: 60 }}, { 'puntaje' : {$lte: 80 }} ] }},

{ $cuenta: 'Grado B' } ] )

Ejemplo 03

En las ilustraciones anteriores, hemos utilizado la agregación de recuento para obtener solo el número de registros coincidentes para los valores de campo particulares, como una puntuación o un nombre específicos. El método de agregación de MongoDB le permite obtener el número de recuento de todos los registros que contienen valores duplicados en la colección.

Para esto, necesita usar la agregación $group dentro del comando de función agregada, como se muestra a continuación. El campo _id se ha utilizado para especificar el campo 'nombre' en el que funcionaría la agregación de recuento. Además de esto, el campo definido por el usuario NameCount utilizará la agregación $count para contar varios duplicados en el campo 'nombre'.

El resultado de esta consulta se muestra a continuación. Contiene los valores del campo 'nombre' y su número de recuento dentro del campo NameCount según las duplicaciones de valores, como que Cillian tenga 4 duplicados, etc.

db.Test.aggregate([ { $grupo: { _id: '$nombre' , NombreCount: { $count: {} }, }, }, ])

Ejemplo 04

También podemos usar la agregación de recuento en registros de campos anidados para contar valores de campos particulares. Para profundizar en esto, hemos creado una colección llamada 'Profesor' y agregamos el campo anidado 'sub' y el campo de tipo matriz 'shift' dentro de ella junto con otros campos: nombre y pago. La función find() ha estado mostrando los cinco registros de esta colección.

prueba> db.Teacher.find({})

Ahora hemos aplicado la función agregada que contiene el operador de coincidencia. Además, se ha aplicado el operador $and al subcampo “matemático” del campo “sub”, que contiene dos condiciones diferentes. Luego se ha calculado el recuento. El resultado muestra que hay dos registros donde el subcampo matemático tiene más de 10 y menos de 20 valores.

db.Teacher.aggregate( [ { $partido: { '$y' : [ { 'sub.matemáticas' : {$gte: 10 }}, { 'sub.matemáticas' : {$lte: 20 }} ] }}, { $cuenta: 'Grado A' } ] )

Ejemplo 05

Veamos el último ejemplo para ilustrar el uso de la función count() esta vez en lugar de usar la agregación de conteo. Entonces, la función count() se ha aplicado al campo de tipo matriz de la colección 'Profesor', es decir, 'shift'. Usando los índices para el campo de matriz usando el índice 2, hemos especificado el criterio de coincidencia como 'noche'. Genera '2' como el número total de conteos para la entrada 'noche'.

db.Profesor.count({ 'cambio.2' : 'noche' })

De manera muy similar, la función count() también se puede aplicar a los campos anidados, como el subcampo “phy” del campo “sub” de la colección “Teacher”. Hemos especificado los criterios de coincidencia utilizando el operador 'lte' que indica valores inferiores a 14 en el subcampo 'phy'. El resultado de esta instrucción ha estado mostrando '2', es decir, 4 registros con un valor inferior a 14.

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

Conclusión

Esta guía ha demostrado y desarrollado el uso de la agregación $count de MongoDB con varios ejemplos de código. Los ejemplos incluyen la implicación de la agregación de recuentos para obtener el número de recuento de registros de valores específicos y todos los registros de campo a través de las colecciones. Además, incluye el uso de agregación de recuentos en campos de matriz y campos incrustados (anidados). Al final, se ha incluido el ejemplo de la función count() para marcar la diferencia entre el uso de la agregación de conteo y la función de conteo.