Overview
En esta guía, aprenderá a usar el controlador de Scala para obtener un recuento preciso y estimado del número de documentos en una colección. Los siguientes métodos cuentan los documentos en una colección:
countDocuments(): Devuelve el número exacto de documentos que coinciden con un filtro de consulta o que existen en una colecciónestimatedDocumentCount(): Devuelve el número estimado de documentos en una colección
Datos de muestra
Los ejemplos de esta guía utilizan la colección companies en la base de datos sample_training de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde su aplicación Scala, cree un MongoClient que se conecte a un clúster de Atlas y asigne el siguiente valor a database las collection variables y:
val database: MongoDatabase = mongoClient.getDatabase("sample_training") val collection: MongoCollection[Document] = database.getCollection("companies")
Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte la guía de introducción a MongoDB.
Recupere un recuento preciso
Utilice el método countDocuments() para contar el número de documentos de una colección. Para contar el número de documentos que coinciden con criterios de búsqueda específicos, pase un filtro de consulta al método countDocuments().
Para obtener más información sobre cómo especificar una consulta, consulte la Especifique una guía de consulta.
Contar todos los documentos
Para devolver un recuento de todos los documentos de la colección, llame al método countDocuments() sin pasar ningún parámetro, como se muestra en el siguiente ejemplo:
collection.countDocuments() .subscribe((count: Long) => println(s"Number of documents: $count"), (e: Throwable) => println(s"There was an error: $e"))
Number of documents: 9500
Documentos específicos del recuento
Para devolver un recuento de documentos que coinciden con criterios de búsqueda específicos, pase un filtro de consulta al método countDocuments().
El siguiente ejemplo cuenta la cantidad de documentos en los que el valor del campo founded_year es 2010:
collection.countDocuments(equal("founded_year", 2010)) .subscribe((count: Long) => println(s"Companies founded in 2010: $count"), (e: Throwable) => println(s"There was an error: $e"))
Number of companies founded in 2010: 33
Personalizar el comportamiento del conteo
Puede modificar el comportamiento del método countDocuments() pasando una instancia CountOptions como parámetro. La siguiente tabla describe algunas funciones miembro de la clase CountOptions que puede usar para configurar opciones para la operación de conteo:
Método | Descripción |
|---|---|
| Sets the collation to use for the operation. Parameter Type: Collation |
| Sets the index to use for the operation. ParameterType: Bson |
| Sets the maximum number of documents to count. This value must be a positive integer. Parameter Type: int |
| Sets the number of documents to skip before counting documents. Parameter Type: int |
El siguiente ejemplo utiliza el método countDocuments() para contar la cantidad de documentos en los que el campo number_of_employees tiene el valor 50 e indica a la operación que cuente un máximo de 100 resultados:
val countOptions = CountOptions().limit(100) collection.countDocuments(equal("number_of_employees", 50), countOptions) .subscribe((count: Long) => println(s"Companies with 50 employees: $count"), (e: Throwable) => println(s"There was an error: $e"))
Number of companies with 50 employees: 100
Recuperar un recuento estimado
Puede obtener una estimación del número de documentos de una colección llamando al método estimatedDocumentCount(). Este método estima la cantidad de documentos basándose en los metadatos de la colección, lo que podría ser más rápido que realizar un recuento preciso.
El siguiente ejemplo estima el número de documentos en una colección:
collection.estimatedDocumentCount() .subscribe((count: Long) => println(s"Estimated number of documents: $count"), (e: Throwable) => println(s"There was an error: $e"))
Estimated number of documents: 9500
Personalizar el comportamiento del recuento estimado
Puedes modificar el comportamiento del método estimatedDocumentCount() pasando una instancia EstimatedDocumentCountOptions como parámetro. La clase EstimatedDocumentCountOptions incluye la función miembro comment(), que puedes usar para añadir un comentario a tu operación.
El siguiente ejemplo utiliza el método estimatedDocumentCount() para devolver una estimación de la cantidad de documentos en la colección y establece un comentario en la operación:
val estimatedOptions = EstimatedDocumentCountOptions().comment("Count operation") collection.estimatedDocumentCount(estimatedOptions) .subscribe((count: Long) => println(s"Estimated number of documents: $count"), (e: Throwable) => println(s"There was an error: $e"))
Estimated number of documents: 9500
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: