Docs Menu
Docs Home
/ /

count (comando de base de datos)

count

Cuenta el número de documentos en una colección o vista. Devuelve un documento que contiene este recuento, así como el estado del comando.

Tip

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

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 controladores de MongoDB descontinuaron sus respectivas API de cursor y colección count() (que ejecutan el comando) en favor de las nuevas API correspondientes count a countDocuments() estimatedDocumentCount()y. Para conocer los nombres de API específicos de cada controlador, consulte 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 Flex y M0. Para obtener más información, consulta 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

MongoDB valida los nombres de las opciones del count comando. El comando genera un error si se especifica un nombre de opción desconocido.

db.runCommand(
{
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 consulta que selecciona qué documentos contar en la colección o vista.

limit

entero

Opcional. El número máximo de documentos coincidentes a 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 cadena 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:

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

maxTimeMS

non-negative integer

Opcional.

Especifica un límite de tiempo en milisegundos. Si no especifica un valor para maxTimeMS, las operaciones no agotarán el tiempo de espera. Un valor de 0 especifica explícitamente el comportamiento por defecto sin límites.

MongoDB finaliza las operaciones que exceden su límite de tiempo asignado utilizando el mismo mecanismo que db.killOp(). MongoDB solo termina una operación en uno de sus puntos de interrupción designados.

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.

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

A partir de MongoDB,6.0 el count comando se incluye en la API estable1 V. Para usar el count comando en la API estable, debe conectar su controlador a una implementación que ejecute MongoDB 6.0 o una versión posterior.

Al llamar a sin un predicado de consulta, es posible que reciba count count recuentos de documentos inexactos. Sin un predicado de consulta, los comandos devuelven resultados basados ​​en los metadatos de la colección, lo que puede resultar en un recuento aproximado. En particular,

Para los recuentos basados en los metadatos de la colección, consulta también la etapa de la pipeline de collStats con la opción count.

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 cuando se ejecuta sin count un predicado de consulta puede generar un recuento inexacto si existen documentos huérfanos o si hay una migración de fragmentos 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.

Si el cliente que emitió count se desconecta antes de que la operación se complete, MongoDB marca count para su 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 del comando ok es 1:

{ "n" : 26, "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'):

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 valor del 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 utilizar 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

bulkWrite

En esta página