Definición
$countNuevo 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).
Compatibilidad
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.
Sintaxis
$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 ..
Comportamiento
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.
Ejemplos
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:
La etapa
$matchexcluye los documentos que tienen un valor descoremenor o igual a80para pasar los documentos conscoremayor que80a la siguiente etapa.La etapa
$countdevuelve un conteo de los documentos restantes en la canalización de agregación y asigna el valor a un campo llamadopassing_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" } ] )