Overview
En esta guía, puedes aprender a utilizar la librería PHP de MongoDB para recuperar un conteo exacto y estimado de la cantidad de documentos en una colección. Los siguientes métodos cuentan los documentos en una colección:
MongoDB\Collection::countDocuments(): Devuelve el número exacto de documentos que coinciden con un filtro de query o que existen en una colecciónMongoDB\Collection::estimatedDocumentCount()Devuelve el número estimado de documentos en una colección.
Datos de muestra
The examples in this guide use the companies collection in the sample_training database from the Atlas sample datasets. To access this collection from your PHP application, instantiate a MongoDB\Client that connects to an Atlas cluster and assign the following value to your $collection variable:
$collection = $client->sample_training->companies;
Para aprender a crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de muestra, consulta la guía Introducción de MongoDB.
Recupera un recuento preciso
Utiliza el método MongoDB\Collection::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 cómo especificar una query, consulta la guía Especificar una query.
Contar todos los documentos
Para devolver un recuento de todos los documentos en la colección, pasa un arreglo de filtro de query vacío al método countDocuments(), como se muestra en el siguiente ejemplo:
$result = $collection->countDocuments([]); echo 'Number of documents: ', $result;
Contar documentos específicos
Para devolver un recuento de documentos que coinciden con criterios de búsqueda específicos, pasa un filtro de query al método countDocuments().
El siguiente ejemplo cuenta el número de documentos en los que el valor del campo founded_year es 2010:
$result = $collection->countDocuments(['founded_year' => 2010]); echo 'Number of companies founded in 2010: ', $result;
Personalizar el comportamiento de recuento
Puedes modificar el comportamiento del método countDocuments() pasando un arreglo que especifique valores de opciones. La siguiente tabla describe algunas opciones que puedes configurar para personalizar la operación de conteo:
Opción | Descripción |
|---|---|
| La intercalación que se utilizará para la operación. Para obtener más información, consulte la sección Intercalación de esta página. |
| El índice que se utilizará para la operación. |
| El comentario que se va a adjuntar a la operación. |
| El número máximo de documentos que se deben contar. Este valor debe ser un número entero positivo. |
| La cantidad máxima de tiempo en milisegundos que la operación puede ejecutar. |
| El número de documentos que se deben omitir antes de contar documentos. |
| Preferencia de lectura que se utilizará para la operación. Para obtener más información, consulte Preferencia de lectura en el manual del servidor. |
El siguiente ejemplo utiliza el método countDocuments() para contar el número de documentos en los que el campo number_of_employees tiene el valor 50 e instruye a la operación a contar un máximo de 100 resultados:
$result = $collection->countDocuments( ['number_of_employees' => 50], ['limit' => 100], ); echo 'Number of companies with 50 employees: ', $result;
Intercalación
Para especificar una intercalación para tu operación, pasa un parámetro arreglo $options que establezca la opción collation en el método de la operación. Asigna la opción collation a un arreglo que configure las reglas de intercalación.
La siguiente tabla describe los campos que se pueden configurar para la intercalación:
Campo | Descripción |
|---|---|
| (Required) Specifies the International Components for Unicode (ICU) locale. For a list of supported locales, see Collation Locales and Default Parameters in the MongoDB Server manual. |
| (Opcional) Especifica si se debe incluir la comparación de mayúsculas y minúsculas. |
| (Opcional) Especifica el orden de clasificación de las diferencias de mayúsculas y minúsculas durante las comparaciones de nivel terciario. |
| (Optional) Specifies the level of comparison to perform, as defined in the ICU documentation. |
| (Opcional) Especifica si el controlador compara las cadenas numéricas como números. |
| (Opcional) Especifica si la librería considera los espacios en blanco y la puntuación como caracteres base a los efectos de la comparación. |
| (Opcional) Especifica qué caracteres considera la librería ignorables cuando el campo |
| (Opcional) Especifica si las strings que contienen diacríticos se ordenan de atrás hacia adelante en la string. |
Para obtener más información sobre la intercalación y los posibles valores de cada campo, consulta la entrada Collation en el manual del servidor de MongoDB.
Recuperar un conteo estimado
Puede recuperar una estimación de la cantidad de documentos en una colección llamando al método MongoDB\Collection::estimatedDocumentCount(). El método estima la cantidad de documentos en función de los metadatos de la colección, lo que podría ser más rápido que realizar un recuento exacto.
El siguiente ejemplo estima el número de documentos en una colección:
$result = $collection->estimatedDocumentCount(); echo 'Estimated number of documents: ', $result;
Personaliza el comportamiento de conteo estimado
Puede modificar el comportamiento del método estimatedDocumentCount() al pasar un arreglo que especifique valores de opción como parámetro. La siguiente tabla describe las opciones que puedes establecer en el arreglo:
Opción | Descripción |
|---|---|
| El comentario que se va a adjuntar a la operación. |
| La cantidad máxima de tiempo en milisegundos que la operación puede ejecutar. |
| La preocupación de lectura que se utilizará para la operación. Para obtener más información, consulte la sección "Preocupación de lectura" en el manual del servidor. |
| Preferencia de lectura que se utilizará para la operación. Para obtener más información, consulte Preferencia de lectura en el manual del servidor. |
| La sesión de cliente para asociar con la operación. |
El siguiente ejemplo usa el método estimatedDocumentCount() para devolver una estimación del número de documentos en la colección y establece un tiempo de espera de 1000 milisegundos en la operación:
$result = $collection->estimatedDocumentCount(['maxTimeMS' => 1000]); echo 'Estimated number of documents: ', $result;
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: