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:
Definición
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.
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() 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 |
|---|---|---|
| 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 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 } } } ])
Colecciones y vistas vacías o no existentes
countDocuments() Devuelve 0 en una colección o vista vacía o inexistente.
Restricciones del query
No puede utilizar los siguientes operadores de consulta como parte de la expresión de consulta para countDocuments():
Operador restringido | Alternativa | |
|---|---|---|
Como alternativa, utilice | ||
Como alternativa, utilice | ||
Como alternativa, utilice |
Transacciones
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.
Desconexión del cliente
Si el cliente que emitió countDocuments() se desconecta antes de que la operación finalice, MongoDB marca countDocuments() para su terminación killOp usando.
Ejemplos
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.
Cuenta todos los documentos en una colección
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.
Conteo de todos los documentos que coinciden con una query
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" } )