Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$count (etapa de agregación)

$count

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 la canalización de agregación $count. También puede usar $count en estos otros contextos:

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 ..

El tipo de retorno está representado por el tipo más pequeño que puede almacenar el valor final de la cuenta: integer → long → double

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() envuelve la $group etapa de agregación con una expresión $sum.

Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación autogestionada de MongoDB, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas para ejecutar los ejemplos de esta página.

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

  1. La etapa $match filtra los documentos donde metacritic es igual a 100, para pasar solo esos documentos 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 perfect_score_count.

db.movies.aggregate( [
{ $match: { metacritic: { $eq: 100 } } },
{ $count: "perfect_score_count" }
] )
[ { perfect_score_count: 8 } ]

Los ejemplos de C# en esta página utilizan la base de datos sample_mflix de los conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta Primeros pasos en la documentación del controlador de MongoDB .NET/C#.

La siguiente clase Movie modela los documentos en la colección sample_mflix.movies:

[BsonIgnoreExtraElements]
public class Movie
{
[BsonId]
public ObjectId Id { get; set; }
[BsonElement("title")]
public string Title { get; set; } = null!;
[BsonElement("year")]
public int? Year { get; set; }
[BsonElement("runtime")]
public int? Runtime { get; set; }
[BsonElement("rated")]
public string? Rated { get; set; }
[BsonElement("metacritic")]
public int Metacritic { get; set; }
[BsonElement("plot")]
public string? Plot { get; set; }
[BsonElement("type")]
public string? Type { get; set; }
[BsonElement("cast")]
public string[]? Cast { get; set; }
[BsonElement("directors")]
public string[]? Directors { get; set; }
[BsonElement("writers")]
public string[]? Writers { get; set; }
[BsonElement("imdb")]
public ImdbData? Imdb { get; set; }
}

Para utilizar el controlador de MongoDB .NET/C# para añadir una etapa $count a una canalización de agregación, llame al método UnionWith() en un objeto PipelineDefinition.

El siguiente ejemplo crea una etapa de pipeline que devuelve un conteo de todos los documentos en la colección movies donde el campo metacritic tiene el valor 100:

var pipeline = new EmptyPipelineDefinition<Movie>()
.Match(Builders<Movie>.Filter.Eq(m => m.Metacritic, 100))
.Count();

Los ejemplos de Node.js en esta página utilizan la base de datos sample_mflix de los conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte Primeros pasos en la documentación del controlador de MongoDB Node.js.

Para utilizar el controlador de MongoDB Node.js para agregar una etapa de $count a una canalización de agregación, utilice el Operador $count en un objeto de canalización.

El siguiente ejemplo crea una etapa de pipeline que cuenta la cantidad de documentos de entrada de la colección sample_mflix.movies y devuelve un documento que contiene el conteo. A continuación, el ejemplo ejecuta la canalización de agregación:

const pipeline = [{ $count: "movies" }];
const cursor = collection.aggregate(pipeline);
return cursor;