Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Agregación

count

count

Cuenta el número de documentos en una colección o una vista. Retorna un documento que contiene este recuento y también el estado del comando.

Tip

En mongosh, este comando también se puede ejecutar a través del count() método asistente.

Los métodos asistente son convenientes para usuarios de mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de base de datos. En los casos en que no se necesite la conveniencia o se requieran campos de retorno adicionales, utiliza el comando de base de datos.

Nota

Los drivers de MongoDB compatibles con las funcionalidades de 4.0 desaprueban sus respectivas count() API de cursor y colección (que ejecutan el comando count) a favor de nuevas API que corresponden a countDocuments() y estimatedDocumentCount(). Para ver los nombres API específicos de un controlador determinado, consulta la documentación de la API del controlador.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

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

Importante

Este comando tiene soporte limitado en los clústeres M0, M2 y M5. Para más información, consulte Comandos no compatibles.

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

El comando tiene la siguiente sintaxis:

Nota

A partir de la versión 4.2, MongoDB implementa una validación más estricta de los nombres de opciones para el comando count. El comando ahora genera un error si se especifica un nombre de opción desconocido.

{
count: <collection or view>,
query: <document>,
limit: <integer>,
skip: <integer>,
hint: <hint>,
readConcern: <document>,
maxTimeMS: <integer>,
collation: <document>,
comment: <any>
}

count tiene los siguientes campos:

Campo
Tipo
Descripción

count

string

El nombre de la colección o vista a contar.

query

Documento

opcional. Una query que selecciona qué documentos contar en la colección o vista.

limit

entero

opcional. El número máximo de documentos coincidentes que se pueden devolver.

skip

entero

Opcional. El número de documentos coincidentes que se omitirán antes de devolver los resultados.

hint

string o documento

opcional. El índice a utilizar. Especifique el nombre del índice como una string o el documento de especificación del índice.

readConcern

Documento

Opcional. Especifica el nivel de consistencia de lectura. La opción debe presentar la siguiente sintaxis:

readConcern: { level: <value> }

Los posibles niveles de consistencia de lectura son estos:

  • "local"Este es el nivel de consistencia de lectura por defecto para las operaciones de lectura contra el primario y los secundarios.

  • "available". Disponible para operaciones de lectura en el primario y los secundarios. "available" se comporta de la misma manera que "local" contra el primario y los secundarios no particionados. La query devuelve los datos más recientes de la instancia.

  • "majority". Disponible para Sets de réplicas que utilizan el motor de almacenamiento WiredTiger.

  • "linearizable". Disponible solo para operaciones de lectura en primary.

Para obtener más información sobre los niveles de consistencia de lectura, consulta Nivel de consistencia de lectura.

maxTimeMS

non-negative integer

opcional. .. include:: /includes/maxTimeMS-description.rst

collation

Documento

Opcional.

Especifica la intercalación a utilizar para la operación.

La intercalación permite a los usuarios especificar reglas propias del lenguaje para la comparación de strings, como reglas para el uso de mayúsculas y minúsculas y marcas de acento.

La opción de intercalación tiene la siguiente sintaxis:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

Al especificar la intercalación, el campo locale es obligatorio; todos los demás campos de intercalación son opcionales. Para las descripciones de los campos, consulta Documento de intercalación.

Si no se especifica la intercalación, pero la colección tiene una intercalación por defecto (ver db.createCollection()), la operación utiliza la intercalación especificada para la colección.

Si no se especifica ninguna intercalación para la colección o para las operaciones, MongoDB utiliza la comparación binaria simple usada en versiones anteriores para las comparaciones de strings.

No puedes especificar varias intercalaciones para una operación. Por ejemplo, no puedes especificar diferentes intercalaciones por campo, o si realizas una búsqueda con un ordenamiento, no puedes usar una intercalación para la búsqueda y otra para el ordenamiento.

Novedad en la versión 3.4.

comment

any

Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:

Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.).

Desde MongoDB 5.0.9, el comando count está incluido en la Stable API V1. Para usar el comando count en la API Stable, debes conectar tu controlador a una implementación que esté ejecutando MongoDB 5.0.9 o superior.

Cuando se usa count en una transacción, el recuento resultante no filtrará ninguna transacción multi-documento no comprometida.

Para obtener más detalles, se debe consultar Transacciones y operaciones de recuento.

En un clúster fragmentado, el comando count ejecutado sin un predicado de consulta puede resultar en un conteo inexacto si existen documentos huérfanos o si una migración de fragmentos está en progreso.

Para evitar estas situaciones, en un clúster fragmentado, usa el método db.collection.aggregate():

Puedes utilizar la etapa $count para contar los documentos. Por ejemplo, la siguiente operación cuenta los documentos en una colección:

db.collection.aggregate( [
{ $count: "myCount" }
])

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

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

Tip

$collStats para devolver un conteo aproximado basado en los metadatos de la colección.

Después de un cierre no limpio de un mongod que utiliza el motor de almacenamiento WiredTiger, las estadísticas de conteo informadas por count pueden ser inexactas.

La cantidad de deriva depende del número de operaciones de inserción, actualización o eliminación realizadas entre el último punto de control y el apagado no limpio. Los puntos de control suelen ocurrir cada 60 segundos. Sin embargo, las instancias mongod que se ejecutan con configuraciones --syncdelay no por defecto pueden tener puntos de control más o menos frecuentes.

Ejecuta validate en cada colección en el mongod para restaurar las estadísticas después de un apagado no limpio.

Después de un apagado no limpio:

Nota

Esta pérdida de precisión solo se aplica a count operaciones que no incluyen un documento de consulta.

A partir de MongoDB 4.2, si el cliente que emite count se desconecta antes de que la operación termine, MongoDB marca count para la terminación usando killOp.

Las siguientes secciones proporcionan ejemplos del count comando.

La siguiente operación cuenta el número de todos los documentos en la colección orders:

db.runCommand( { count: 'orders' } )

En el resultado, el n, que representa el recuento, es 26, y el estado de la orden ok es 1:

{ "n" : 26, "ok" : 1 }

La siguiente operación devuelve un recuento de los documentos de la colección orders donde el valor del campo ord_dt es mayor que Date('01/01/2012'):

db.runCommand( { count:'orders',
query: { ord_dt: { $gt: new Date('01/01/2012') } }
} )

En el resultado, el n, que representa el recuento, es 13 y el estado del comando ok es 1:

{ "n" : 13, "ok" : 1 }

La siguiente operación devuelve un recuento de los documentos en la colección orders donde el valor del campo ord_dt es mayor que Date('01/01/2012') y omite los primeros 10 documentos coincidentes:

db.runCommand( { count:'orders',
query: { ord_dt: { $gt: new Date('01/01/2012') } },
skip: 10 } )

En el resultado, el n, que representa el recuento, es 3 y el estado del comando ok es 1:

{ "n" : 3, "ok" : 1 }

La siguiente operación utiliza el índice { status: 1 } para devolver un recuento de los documentos en la colección orders donde el valor del campo ord_dt es mayor que Date('01/01/2012') y el campo status es igual a "D":

db.runCommand(
{
count:'orders',
query: {
ord_dt: { $gt: new Date('01/01/2012') },
status: "D"
},
hint: { status: 1 }
}
)

En el resultado, el n, que representa el recuento, es 1 y el estado del comando ok es 1:

{ "n" : 1, "ok" : 1 }

Para anular el nivel de consistencia de lectura por defecto de "local", usa la opción readConcern.

La siguiente operación en un set de réplicas especifica un nivel de consistencia de lectura de "majority" para leer la copia más reciente de los datos confirmados como están escritos en la mayoría de los nodos.

Importante

  • Para usar el nivel readConcern de "majority", debe especificar una condición query no vacía.

  • Independientemente del nivel de consistencia de lectura, es posible que los datos más recientes de un nodo no reflejen la versión más reciente de los datos en el sistema.

db.runCommand(
{
count: "restaurants",
query: { rating: { $gte: 4 } },
readConcern: { level: "majority" }
}
)

Para asegurarte de que un solo hilo pueda leer sus propias escrituras, utiliza el nivel de consistencia de lectura "majority" y el nivel de confirmación de escritura "majority" contra el primario del set de réplicas.

Volver

Agregar

En esta página