Docs Menu
Docs Home
/ /
Colecciones

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

MongoDB con controladores

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

Devuelve un entero que representa el número de documentos que coinciden con la consulta de la colección o vista. Este método está disponible para su uso en Actas.

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() toma 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 de db.collection.count(), db.collection.countDocuments() no utiliza los metadatos para devolver el conteo. En su lugar, realiza una agregación del documento para devolver un recuento preciso, incluso después de un apagado no limpio o en presencia de documentos huérfanos en un clúster particionado.

El db.collection.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 } } }
])

db.collection.countDocuments() devuelve 0 en una colección o vista vacía o que no existe.

No puedes usar los siguientes operadores del query como parte de la expresión del query para db.collection.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> ] } }

db.collection.countDocuments() puede usarse dentro de transacciones distribuidas.

Cuando se usa db.collection.countDocuments() en una transacción, el recuento resultante no filtrará ninguna transacción multi-documento no comprometida.

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ó db.collection.countDocuments() se desconecta antes de que la operación se complete, MongoDB marca db.collection.countDocuments() para su terminación usando killOp.

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

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

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.countDocuments( { ord_dt: { $gt: new Date('01/01/2012') } }, { limit: 100 } )

Tip

Volver

db.colección.count

En esta página