Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

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

Importante

Método mongosh

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

Para el comando de base de datos, consulta el comando count.

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 la cantidad de documentos que coincidirían con la query find() para la colección o vista, sin realizar la operación find.

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 la compatibilidad de Atlas con 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.

Opcional. Especifica la intercalación que se debe 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().

Sin un predicado de query, count() devuelve resultados basados en los metadatos de la colección, lo que puede dar lugar a un recuento incorrecto. 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 puedes usar count y ayudantes de shell cursor.count() y count() en transacciones.

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

En un clúster fragmentado, sin un predicado dedb.collection.count() consulta puede dar como resultado un recuento inexacto si existen documentos huérfanos o si se está realizando una migración de fragmentos.

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 incorrecto de un mongod que utiliza el motor de almacenamiento Wired Tiger, las estadísticas de recuento 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 aplica a las operaciones de count() que no incluyen un predicado de query.

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

Para contar todos los documentos en la colección orders:

db.orders.count()

La operación equivalente es:

db.orders.find().count()

Contar los documentos en la colección orders donde ord_dt es mayor que new Date('01/01/2012'):

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

La operación equivalente es:

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