Docs Menu
Docs Home
/ /

db.colección.count() (método mongosh)

Importante

Método mongosh

Esta página documenta una Método mongosh. Esta no es la documentación para comandos de base de datos ni para controladores específicos del lenguaje, como Node.js.

Para el comando de base de datos, consulte el count dominio.

Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.

db.collection.count(query, options)

Devuelve el recuento de documentos que coincidirían con una find() query para la colección o vista. El método db.collection.count() no realiza la operación find(), sino que cuenta y devuelve el número de resultados que coinciden con una query.

Nota

Los controladores de MongoDB desaprueban sus respectivas API de cursor y colección count() en favor de nuevas API para countDocuments() y estimatedDocumentCount(). Para los nombres específicos de API de un controlador dado, consulte la documentación del controlador.

Este método está disponible en implementaciones alojadas en los siguientes entornos:

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

Nota

Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, 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 método db.collection.count() tiene la siguiente forma:

db.collection.count(query, options)

Este método toma los siguientes parámetros:

Parameter
Tipo
Descripción

query

Documento

Los criterios de selección de la query.

options

Documento

Opcional. Opciones extra para modificar el recuento.

El documento options contiene los siguientes campos:

Campo
Tipo
Descripción

limit

entero

Opcional. El número máximo de documentos que se deben contar.

skip

entero

Opcional. El número de documentos que se deben omitir antes de contar.

hint

string o documento

Opcional. Una sugerencia o especificación del nombre del índice para la query.

maxTimeMS

entero

Opcional. La cantidad máxima de tiempo para permitir ejecutar la query.

readConcern

string

Opcional. Especifica el nivel de consistencia de lectura. El nivel por defecto es "local".

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.

Para utilizar un nivel de consistencia de lectura de "majority", debes especificar una condición query que no esté vacía.

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.

count() es equivalente a la construcción db.collection.find(query).count().

Tip

Cuando se invoca a count() sin un predicado de query, pueden recibirse recuentos de documentos inexactos. Sin un predicado de query, los métodos de count() devuelven resultados basados en los metadatos de la colección, lo que puede resultar en un conteo 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.

No puede usar count y asistentes de shell count() y db.collection.count() en transacciones.

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

En un clúster particionado, db.collection.count() sin un predicado de query puede resultar en un recuento inexacto si existen documentos huérfanos o si una migración de fragmentos está en curso.

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.

Considera una colección con el siguiente índice:

{ a: 1, b: 1 }

Al realizar un recuento, MongoDB puede devolver el recuento utilizando solo el índice si:

  • La query puede usar un índice,

  • la query solo contiene condiciones sobre las claves del índice, y

  • los predicados de query acceden a un único rango contiguo de claves de índice.

Por ejemplo, las siguientes operaciones pueden devolver el conteo usando solo el índice:

db.collection.find( { a: 5, b: 5 } ).count()
db.collection.find( { a: { $gt: 5 } } ).count()
db.collection.find( { a: 5, b: { $gt: 10 } } ).count()

Sin embargo, si la query puede utilizar un índice pero los predicados de la query no acceden a un solo rango contiguo de claves de índice o la query también contiene condiciones en campos fuera del índice, entonces, además de utilizar el índice, MongoDB también debe leer los documentos para devolver el recuento.

db.collection.find( { a: 5, b: { $in: [ 1, 2, 3 ] } } ).count()
db.collection.find( { a: { $gt: 5 }, b: 5 } ).count()
db.collection.find( { a: 5, b: 5, c: 5 } ).count()

En tales casos, durante la lectura inicial de los documentos, MongoDB carga los documentos en memoria de manera que las llamadas posteriores a la misma operación de conteo tengan un mejor rendimiento.

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 predicado de query.

Si el cliente que emitió db.collection.count() se desconecta antes de que la operación se complete, MongoDB marca db.collection.count() para su terminación usando killOp.

Para contar el número de todos los documentos en la colección orders, utiliza la siguiente operación:

db.orders.count()

Esta operación es equivalente a la siguiente:

db.orders.find().count()

Cuenta el número de documentos en la colección orders cuyo campo ord_dt sea mayor que new Date('01/01/2012'):

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

La query es equivalente a lo siguiente:

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

Volver

db.collection.configureQueryAnalyzer

En esta página