Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Contabilizar documentos

Puede utilizar el MongoDB Kotlin Driver para contar el número de documentos en una colección. Hay dos métodos de instancia en el MongoCollection clase que se puede llamar para contar el número de documentos en una colección:

  • countDocuments() devuelve un recuento preciso del número de documentos en la colección que coinciden con una query específica. Si especificas un filtro de query vacío, el método devuelve el número total de documentos en la colección.

  • estimatedDocumentCount() Devuelve una estimación del número de documentos de la colección según sus metadatos. No se puede especificar una consulta al usar este método.

El método estimatedDocumentCount() devuelve resultados más rápido que el método countDocuments() porque utiliza los metadatos de la colección en lugar de analizarla por completo. El método countDocuments() devuelve un recuento preciso del número de documentos y permite especificar un filtro.

Tip

Cuando utilizas countDocuments() para devolver el número total de documentos en una colección, puedes mejorar el rendimiento evitando un escaneo de la colección. Para ello, use un pista para aprovechar el índice incorporado en el campo _id. Utiliza esta técnica solamente al llamar a countDocuments() con un parámetro de query vacío, por ejemplo:

val options = CountOptions().hintString("_id_")
val numDocuments = collection.countDocuments(BsonDocument(), options)

Cuando se llama al método countDocuments(), se puede pasar opcionalmente un parámetro filtro de query. No se pueden pasar parámetros cuando se llama a estimatedDocumentCount().

Importante

Problema con Stable API V1 y MongoDB Server

Si está utilizando la API estable v1 con la opción "estricta" y una versión de servidor MongoDB entre 5.0.0 y 5.0.8 inclusive, las llamadas al método estimatedDocumentCount() pueden generar errores debido a un error del servidor.

Actualiza el servidor MongoDB 5.0.9 o uno posterior, o establece la opción de "estricto" de la Stable API en false para evitar este problema.

También puede pasar un parámetro opcional a cualquiera de estos métodos para especificar el comportamiento de la llamada:

Método
Clase de parámetros opcionales
Descripción

countDocuments()

CountOptions

Puede configurar las siguientes opciones:

  • collation():Establece la intercalación

  • comment()": Establece el comentario

  • hint(): establece el índice a utilizar

  • hintString(): establece el índice a utilizar

  • limit()Limita los documentos para contar

  • skip(): Omite el número especificado de documentos antes de contar

estimatedDocumentCount()

EstimatedDocumentCountOptions

Puedes establecer un comentario usando el método comment().

Ambos métodos devuelven el número de documentos coincidentes como un primitivo Long.

Nota

Este ejemplo se conecta a una instancia de MongoDB utilizando un URI de conexión. Para obtener más información sobre cómo conectarse a tu instancia de MongoDB, consulta el guía de conexión.

El siguiente ejemplo estima el número de documentos en la colección movies de la base de datos sample_mflix, y luego devuelve un recuento exacto del número de documentos en la colección movies con Spain en el campo countries:

import com.mongodb.MongoException
import com.mongodb.client.model.Filters
import com.mongodb.kotlin.client.coroutine.MongoClient
import kotlinx.coroutines.runBlocking
data class Movie(val countries: List<String>)
fun main() = runBlocking {
// Replace the uri string with your MongoDB deployment's connection string
val uri = "<connection string uri>"
val mongoClient = MongoClient.create(uri)
val database = mongoClient.getDatabase("sample_mflix")
val collection = database.getCollection<Movie>("movies")
val query = Filters.eq(Movie::countries.name, "Spain")
try {
val estimatedCount = collection.estimatedDocumentCount()
println("Estimated number of documents in the movies collection: $estimatedCount")
val matchingCount = collection.countDocuments(query)
println("Number of movies from Spain: $matchingCount")
} catch (e: MongoException) {
System.err.println("An error occurred: $e")
}
mongoClient.close()
}
Estimated number of documents in the movies collection: 23541
Number of movies from Spain: 755

Para información adicional sobre las clases y métodos mencionados en esta página, consulta la siguiente documentación de API:

Volver

Especifica qué campos se deben devolver

En esta página