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

Contabilizar documentos

En esta guía, podrás aprender cómo contar la cantidad de documentos en tus colecciones de MongoDB. Hay dos métodos de instancia en la clase MongoCollection que puedes llamar para contar el número de documentos en una colección:

  • countDocuments() devuelve el número de documentos en la colección que coinciden con una query especificada. 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 de la cantidad de documentos en la colección en función de los metadatos de la colección. No se puede especificar una query al usar este método.

El método estimatedDocumentCount() devuelve resultados más rápidamente que el método countDocuments() porque utiliza los metadatos de la colección en lugar de escanear toda la colección. El método countDocuments() devuelve un recuento preciso del número de documentos y es compatible con la especificación de un filtro.

Tip

Cuando se utiliza countDocuments() para devolver el número total de documentos en una colección, se puede mejorar el rendimiento evitando un escaneo de colección. Para ello, utiliza una pista para aprovechar el índice integrado en el campo _id. Utiliza esta técnica únicamente al llamar a countDocuments() con un parámetro de query vacío.

CountOptions opts = new CountOptions().hintString("_id_");
long numDocuments = collection.countDocuments(new BsonDocument(), opts);

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á usando la Stable API V1 con la opción "strict" y una versión de MongoDB Server entre 5.0.0 y 5.0.8 inclusive, las llamadas al método estimatedDocumentCount() podrían generar un error debido a un fallo en el servidor.

Actualiza a MongoDB Server 5.0.9 o configura la opción "strict" de la Stable API en false para evitar este problema.

También puedes 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

Puedes especificar una cantidad máxima de documentos a contar usando el método limit() o la cantidad máxima de tiempo de ejecución usando el método maxTime().

estimatedDocumentCount()

EstimatedDocumentCountOptions

Puedes especificar el tiempo máximo de ejecución utilizando el método maxTime().

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

Nota

Configuración de ejemplo

Este ejemplo se conecta a una instancia de MongoDB mediante un URI de conexión. Para obtener más información sobre cómo conectarse a su instancia de MongoDB, consulte la guía Crear un MongoClient. Este ejemplo también utiliza la colección movies en la base de datos sample_mflix incluida en los conjuntos de datos de muestra de Atlas. Puede cargarlos en su base de datos en el nivel gratuito de MongoDB Atlas siguiendo el MongoDB Comenzar.

El siguiente ejemplo estima el número de documentos en la colección movies en la base de datos sample_mflix, y luego devuelve un conteo preciso del número de documentos en la colección movies con Canada en el campo countries.

/**
* This file demonstrates how to open a change stream by using the Java driver.
* It connects to a MongoDB deployment, accesses the "sample_mflix" database, and listens
* to change events in the "movies" collection. The code uses a change stream with a pipeline
* to only filter for "insert" and "update" events.
*/
package usage.examples;
import static com.mongodb.client.model.Filters.eq;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class CountDocuments {
public static void main(String[] args) {
// Replace the uri string with your MongoDB deployment's connection string
String uri = "<connection string uri>";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase database = mongoClient.getDatabase("sample_mflix");
MongoCollection<Document> collection = database.getCollection("movies");
Bson query = eq("countries", "Spain");
// Retrieves and prints the estimated number of documents in the collection
long estimatedCount = collection.estimatedDocumentCount();
System.out.println("Estimated number of documents in the movies collection: " + estimatedCount);
// Retrieves and prints the number of documents with a "countries" value of "Spain"
long matchingCount = collection.countDocuments(query);
System.out.println("Number of movies from Spain: " + matchingCount);
}
}
}

Si ejecuta el código de muestra anterior, debería ver una salida similar a la siguiente (los números exactos pueden variar según sus datos):

Estimated number of documents in the movies collection: 23541
Number of movies from Spain: 755

Tip

Legacy API

Si usas la API heredada, consulta la sección de preguntas frecuentes de la guía de la API heredada para conocer los cambios que debes realizar en este ejemplo de código.

Para más información sobre las clases y métodos utilizados para contar documentos, consulta la siguiente documentación de la API: