MongoDB con controladores
Esta página documenta una mongosh . Para ver el método equivalente en un driver de MongoDB, se debe consultar la página correspondiente al lenguaje de programación:
Definición
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.
Compatibilidad
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.
Sintaxis
El método countDocuments() tiene la siguiente forma:
db.collection.countDocuments( <query>, <options> )
Parámetros
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 |
|---|---|---|
| entero | Opcional. El número máximo de documentos que se deben contar. |
| entero | Opcional. El número de documentos que se deben omitir antes de contar. |
| string o documento | Opcional. Un nombre de índice o la especificación del índice que se debe utilizar para el query. |
| entero | Opcional. El tiempo máximo permitido para que el conteo se ejecute. |
Comportamiento
Mecanismo
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 } } } ])
Colecciones y vistas vacías o no existentes
db.collection.countDocuments() devuelve 0 en una colección o vista vacía o que no existe.
Restricciones del query
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 | ||
Como alternativa, utilice | ||
Como alternativa, utilice |
Transacciones
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.
Desconexión del cliente
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.
Ejemplos
Cuenta todos los documentos en una colección
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.
Conteo de todos los documentos que coinciden con una query
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 } )