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, puedes aprender cómo recuperar un recuento exacto y estimado del número de documentos en una colección.

Los ejemplos de esta guía utilizan el sample_restaurants.restaurants colección de la Conjuntos de datos de muestra de Atlas. Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta Empezar.

Importante

Proyecto Reactor librería

Esta guía utiliza la biblioteca Project Reactor para consumir Publisher las instancias devueltas por los métodos del controlador Java Reactive Streams. Para obtener más información sobre la biblioteca Project Reactor y cómo usarla, consulte la sección "Introducción" en la documentación de Reactor. Para obtener más información sobre cómo usamos los métodos de la biblioteca Project Reactor en esta guía, consulte la guía "Escribir datos en MongoDB".

Utiliza el método countDocuments() para contar la cantidad de documentos en una colección. Para contar la cantidad de documentos que cumplen con criterios de búsqueda específicos, pasa un filtro de query al método countDocuments().

Para obtener más información sobre la especificación de una query, consulta Especificar una query.

Para devolver un recuento de todos los documentos en la colección, llama al método countDocuments() y no pases ningún parámetro, como se muestra en el siguiente ejemplo:

Publisher<Long> countPublisher = restaurants.countDocuments();
Mono.from(countPublisher).doOnNext(System.out::println).blockLast();

Para devolver un recuento de documentos que coincidan con criterios de búsqueda específicos, especifica tu query en el método countDocuments(), como se muestra en el siguiente ejemplo. Para obtener más información sobre cómo especificar una query, consulta la guía Especificar una query.

Publisher<Long> countPublisher = restaurants.countDocuments(
eq("cuisine", "Italian"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Puedes modificar el comportamiento del método countDocuments() pasando parámetros opcionales al método. La clase CountOptions proporciona métodos que modifican el comportamiento del método countDocuments(). Para usar la clase CountOptions, construye una nueva instancia de la clase y luego llama a uno o más de sus métodos para modificar la operación de conteo. Puedes encadenar estas llamadas a métodos.

Para modificar el comportamiento de la operación de conteo, pase la instancia de clase y las llamadas a métodos encadenados como el último argumento al método countDocuments().

La siguiente tabla describe los métodos de la clase CountOptions:

Método
Descripción

collation(Collation collation)

Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.

comment(BsonValue comment)

Attaches a BsonValue comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

comment(String comment)

Attaches a String comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

hint(Bson hint)

Sets the index for the operation as a Bson value. For more information, see the hint statement in the MongoDB Server manual.

hintString(String hint)

Sets the index for the operation as a String value. For more information, see the hint statement in the MongoDB Server manual.

limit(int limit)

Sets a limit for the maximum number of documents the cursor returns. For more information, see cursor in the MongoDB Server documentation.

skip(int skip)

Sets the number of documents the query skips before returning results. For more information, see skip in the MongoDB Server manual.

El siguiente código utiliza el método countDocuments() para contar todos los documentos en la colección restaurants con un valor cuisine de "Italian". También adjunta el comentario "Count all Italian restaurants" a la operación como un String.

Publisher<Long> countPublisher = restaurants.countDocuments(
eq("cuisine", "Italian"),
new CountOptions().comment("Count all Italian restaurants"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Puede obtener una estimación del número de documentos de una colección llamando al método estimatedDocumentCount(). Este método estima el número 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:

Publisher<Long> countPublisher = restaurants.estimatedDocumentCount();
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Puedes modificar el comportamiento del método estimatedDocumentCount() pasando parámetros opcionales al método. La clase EstimatedDocumentCountOptions proporciona métodos que modifican el comportamiento del método estimatedDocumentCount(). Para usar la clase EstimatedDocumentCountOptions, construye una nueva instancia de la clase y luego llama a uno o más de sus métodos para modificar la operación de conteo. Puedes encadenar estas llamadas a métodos.

Para modificar el comportamiento de la operación de recuento, pase la instancia de la clase y las llamadas de métodos encadenados como único argumento al método estimatedDocumentCount().

La siguiente tabla describe las opciones que puedes configurar para personalizar estimatedDocumentCount():

Propiedad
Descripción

comment(BsonValue comment)

Attaches a BsonValue comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

comment(String comment)

Attaches a String comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

El siguiente código usa el método estimatedDocumentCount() para estimar la cantidad de documentos en la colección restaurants. También adjunta "Estimated count of all documents" a la operación como un(a) String.

Publisher<Long> countPublisher = restaurants.estimatedDocumentCount(
new EstimatedDocumentCountOptions()
.comment("Estimated count of all documents"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Especifica los documentos a devolver

En esta página