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

En esta guía, aprenderá a contar el número de documentos en sus colecciones de MongoDB. Hay dos métodos de instancia en MongoCollection clase que se puede llamar para contar el número de documentos en una colección:

  • countDocuments() Devuelve el número de documentos de la colección que coinciden con una consulta específica. Si se especifica un filtro de consulta vacío, el método devuelve el número total de documentos de 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

Al utilizar countDocuments() para devolver el número total de documentos en una colección, puedes mejorar el rendimiento evitando un escaneo de colección. Para ello, use un pista para aprovechar el índice incorporado en el campo _id. Usa esta técnica solo cuando llames a countDocuments() con un 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 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

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 utilizando un URI de conexión. Para obtener más información sobre cómo conectarse a tu instancia de MongoDB, consulta el Crea un MongoClient guía. 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. Puedes cargarlos en tu base de datos en el nivel gratuito de MongoDB Atlas siguiendo MongoDB Empezar.

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:

Volver

Buscar documentos

En esta página