Docs Menu
Docs Home
/ /
Etapas de la pipeline de agregación

$count (agregación)

$count

Nuevo en la versión 3.4.

Pasa un documento a la siguiente etapa que contiene un recuento de la cantidad de documentos introducidos en la etapa.

Nota

Desambiguación

Esta página describe la etapa de canalización de agregación $count. Para el acumulador de agregación $count, consulte $count (aggregation accumulator).

Puedes usar $count para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

$count tiene la siguiente sintaxis:

{ $count: <string> }

<string> es el nombre del campo de salida que tiene la cuenta como su valor. <string> debe ser una string no vacía, no debe comenzar con $ y no debe contener el carácter ..

La etapa $count es equivalente a la siguiente secuencia de $group y $project:

db.collection.aggregate( [
{ $group: { _id: null, myCount: { $sum: 1 } } },
{ $project: { _id: 0 } }
] )

myCount es el campo de salida que almacena el conteo. Puede especificar otro nombre para el campo de salida.

Si el conjunto de datos de entrada está vacío, $count no devuelve un resultado.

Tip

db.collection.countDocuments() que envuelve la $group etapa de agregación con una $sum expresión.

Cree una colección llamada scores con estos documentos:

db.scores.insertMany( [
{ "_id" : 1, "subject" : "History", "score" : 88 },
{ "_id" : 2, "subject" : "History", "score" : 92 },
{ "_id" : 3, "subject" : "History", "score" : 97 },
{ "_id" : 4, "subject" : "History", "score" : 71 },
{ "_id" : 5, "subject" : "History", "score" : 79 },
{ "_id" : 6, "subject" : "History", "score" : 83 }
] )

La siguiente operación de agregación consta de dos etapas:

  1. La etapa $match excluye los documentos que tienen un valor de score menor o igual a 80 para pasar los documentos con score mayor que 80 a la siguiente etapa.

  2. La etapa $count devuelve un conteo de los documentos restantes en la canalización de agregación y asigna el valor a un campo llamado passing_scores.

db.scores.aggregate( [
{ $match: { score: { $gt: 80 } } },
{ $count: "passing_scores" }
] )

La operación devuelve este resultado:

{ "passing_scores" : 4 }

Si el conjunto de datos de entrada está vacío, $count no devuelve un resultado. El siguiente ejemplo no devuelve un resultado porque no hay documentos con puntuaciones mayores que 99:

db.scores.aggregate( [
{ $match: { score: { $gt: 99 } } },
{ $count: "high_scores" }
] )

Volver

$collStats

En esta página