Docs Menu
Docs Home
/ /
/ / /

Contabilizar documentos

En esta guía, podrá aprender cómo recuperar un recuento exacto y estimado de la cantidad de documentos de 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 a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte 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".

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 la especificación de una query, consulta Especificar una query.

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

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

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

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

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

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 de la colección restaurants con un valor cuisine de "Italian". También adjunta el comentario "Count all Italian restaurants" a la operación como 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();

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

Para modificar el comportamiento de la operación de conteo, pase la instancia de clase y las llamadas al método encadenadas 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 utiliza el método estimatedDocumentCount() para estimar el número de documentos en la colección restaurants. También adjunta "Estimated count of all documents" a la operación como 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