Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

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

MongoDB con controladores

Esta página documenta a mongosh . Para ver el método equivalente en un driver de MongoDB, se debe consultar la página correspondiente al lenguaje de programación:

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMotorRustScala
db.collection.countDocuments(query, options)

Devuelve un número entero correspondiente a la cantidad de documentos que coinciden con la query de la colección o vista. Este método está disponible para su uso en transacción.

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 countDocuments() tiene la siguiente forma:

db.collection.countDocuments( <query>, <options> )

El método countDocuments() acepta los siguientes parámetros:

Parameter
Tipo
Descripción

Consulta

Documento

Los criterios de selección de query. Para contar todos los documentos, especifica un documento vacío. Véase también Restricciones de ejecución de queries.

opciones

Documento

Opcional. Opciones extra que afectan el comportamiento del conteo.

El documento options puede contener lo siguiente:

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. Un nombre de índice o la especificación del índice que se debe utilizar para el query.

maxTimeMS

entero

Opcional. El tiempo máximo permitido para que el conteo se ejecute.

A diferencia db.collection.count() de, countDocuments() no utiliza los metadatos para devolver el recuento. En su lugar, realiza una agregación del documento para devolver un recuento preciso, incluso después de un apagado incorrecto o en presencia de documentos huérfanos en un clúster fragmentado.

countDocuments() Envuelve la siguiente operación de agregación y devuelve solo el valor de n:

db.collection.aggregate([
{ $match: <query> },
{ $group: { _id: null, n: { $sum: 1 } } }
])

countDocuments() Devuelve 0 en una colección o vista vacía o inexistente.

No puede utilizar los siguientes operadores de consulta como parte de la expresión de consulta para countDocuments():

Operador restringido
Alternativa

Como alternativa, utilice $expr en su lugar.

Como alternativa, utilice $geoWithin con $center; es decir,

{ $geoWithin: { $center: [ [ <x>, <y> ], <radius> ] } }

Como alternativa, utilice $geoWithin con $centerSphere; es decir,

{ $geoWithin: { $centerSphere: [ [ <x>, <y> ], <radius> ] } }

countDocuments() puede usarse dentro de transacciones distribuidas.

Cuando se utiliza countDocuments() en una transacción, el recuento resultante no filtrará ninguna transacción multidocumento no confirmada.

Importante

En la mayoría de los casos, una transacción distribuida incurre en un costo de rendimiento mayor que las escrituras de documentos individuales, y la disponibilidad de transacciones distribuidas no debería ser un sustituto para un diseño de esquema efectivo. Para muchos casos, el modelo de datos desnormalizado (documento incrustado y matrices) seguirá siendo óptimo para tus datos y casos de uso. Es decir, en muchos casos, modelar tus datos de forma adecuada minimizará la necesidad de transacciones distribuidas.

Para consideraciones adicionales sobre el uso de transacciones (como el límite de tiempo de ejecución y el límite de tamaño del oplog), consulta también las consideraciones de producción.

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

Los ejemplos de esta página utilizan datos del conjunto de datos de muestra sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si se realizó alguna modificación en las bases de datos de muestra, es posible que se deban descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.

Para contar el número de documentos en la colección movies, utilice la siguiente operación:

db.movies.countDocuments( { }, { hint: "_id_"} )

Nota

Si usas db.collection.countDocuments() con un filtro de query vacío, MongoDB realiza un escaneo de colección completo que puede ser ineficiente. Para mejorar el rendimiento, este ejemplo especifica un hint() para utilizar el índice _id generado automáticamente. Como alternativa, puedes usar un filtro de query que encuentre todos los documentos como { "_id": { $gte: MinKey } } para contar todos los documentos usando un índice.

Este ejemplo cuenta el número de documentos en la colección movies donde el campo directors contiene "David Lynch":

db.movies.countDocuments( { directors: "David Lynch" } )

Volver

db.colección.count

En esta página