Docs Menu
Docs Home
/ /

Recuperar valores distintos de campo

En esta guía, puede aprender a utilizar la biblioteca PHP de MongoDB para recuperar los distintos valores de un campo específico en una colección.

Dentro de una colección, diferentes documentos pueden contener distintos valores para un mismo campo. Por ejemplo, un documento en una restaurants Una colección tiene un valor borough de 'Manhattan' y otra tiene un valor borough de 'Queens'. Con la biblioteca PHP de MongoDB, puede recuperar todos los valores únicos que contiene un campo en varios documentos de una colección.

Los ejemplos de esta guía utilizan la colección restaurants en la base de datos sample_restaurants de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde su aplicación PHP, cree MongoDB\Client una instancia de que se conecte a un clúster de Atlas y asigne el siguiente valor a su $collection variable:

$collection = $client->sample_restaurants->restaurants;

Para aprender cómo crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de muestra, consulte la guía de introducción a MongoDB.

Para recuperar los valores distintos de un campo específico, llame al método MongoDB\Collection::distinct() y pase el nombre del campo para el cual desea encontrar valores distintos.

El siguiente ejemplo recupera los valores distintos del campo borough en la colección restaurants:

$results = $collection->distinct('borough', []);
foreach ($results as $value) {
echo json_encode($value), PHP_EOL;
}
"Bronx"
"Manhattan"
"Missing"
"Queens"
"Staten Island"

La operación devuelve un arreglo que almacena cada valor distinto del campo borough. Aunque varios documentos tienen el mismo valor en el campo borough, cada valor solo aparece una vez en los resultados.

Puede proporcionar un filtro de consulta al distinct() método para encontrar los distintos valores de campo en un subconjunto de documentos de una colección. Un filtro de consulta es una expresión que especifica los criterios de búsqueda utilizados para encontrar coincidencias en los documentos de una operación. Para obtener más información sobre la creación de un filtro de consulta, consulte Especifique una guía de consulta.

El siguiente ejemplo recupera los valores distintos del campo borough para todos los documentos que tienen un valor de campo cuisine de 'Italian':

$results = $collection->distinct('borough', ['cuisine' => 'Italian']);
foreach ($results as $value) {
echo json_encode($value), PHP_EOL;
}
"Bronx"
"Manhattan"
"Queens"
"Staten Island"

Puede modificar el comportamiento del método distinct() pasando una matriz que especifique los valores de las opciones. La siguiente tabla describe algunas opciones que puede configurar para personalizar la operación:

Opción
Descripción

collation

The collation to use for the operation. To learn more, see the Collation section of this page.
Type: array|object

maxTimeMS

The maximum amount of time in milliseconds that the operation can run.
Type: integer

comment

The comment to attach to the operation.
Type: any valid BSON type

readPreference

The read preference to use for the operation. To learn more, see Read Preference in the Server manual.
Type: MongoDB\Driver\ReadPreference

hint

The index to use for the operation.
Type: string|object

El siguiente ejemplo recupera los valores distintos del campo name para todos los documentos cuyo valor de campo borough es 'Bronx' y cuyo valor de campo cuisine es 'Pizza'. También especifica el campo comment en una matriz de opciones para añadir un comentario a la operación:

$query = ['borough' => 'Bronx', 'cuisine' => 'Pizza'];
$options = ['comment' => 'Bronx pizza restaurants'];
$results = $collection->distinct('name', $query, $options);
foreach ($results as $value) {
echo json_encode($value), PHP_EOL;
}
"$1.25 Pizza"
"18 East Gunhill Pizza"
"2 Bros"
"Aenos Pizza"
"Alitalia Pizza Restaurant"
"Amici Pizza And Pasta"
"Angie'S Cafe Pizza"
...

Para especificar una intercalación para su operación, pase un parámetro de matriz $options que establezca la opción collation en el método de la operación. Asigne la opción collation a una matriz que configure las reglas de intercalación.

La siguiente tabla describe los campos que se pueden configurar para la intercalación:

Campo
Descripción

locale

(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.

Data Type: string

caseLevel

(Optional) Specifies whether to include case comparison.

When set to true, the comparison behavior depends on the value of the strength field:

- If strength is 1, the PHP library compares base
characters and case.

- If strength is 2, the PHP library compares base
characters, diacritics, other secondary differences, and case.

- If strength is any other value, this field is ignored.

When set to false, the PHP library doesn't include case comparison at strength level 1 or 2.

Data Type: bool
Default: false

caseFirst

(Optional) Specifies the sort order of case differences during tertiary level comparisons.

Data Type: string
Default: "off"

strength


Data Type: int
Default: 3

numericOrdering

(Optional) Specifies whether the driver compares numeric strings as numbers.

If set to true, the PHP library compares numeric strings as numbers. For example, when comparing the strings "10" and "2", the library uses the strings' numeric values and treats "10" as greater than "2".

If set to false, the PHP library compares numeric strings as strings. For example, when comparing the strings "10" and "2", the library compares one character at a time and treats "10" as less than "2".

For more information, see Collation Restrictions in the MongoDB Server manual.

Data Type: bool
Default: false

alternate

(Optional) Specifies whether the library considers whitespace and punctuation as base characters for comparison purposes.

Data Type: string
Default: "non-ignorable"

maxVariable

(Optional) Specifies which characters the library considers ignorable when the alternate field is set to "shifted".

Data Type: string
Default: "punct"

backwards

(Optional) Specifies whether strings containing diacritics sort from the back of the string to the front.

Data Type: bool
Default: false

Para obtener más información sobre la intercalación y los posibles valores para cada campo, consulte la entrada Intercalación en el manual de MongoDB Server.

Para obtener más información sobre el distinct() método, consulte en la documentación de la MongoDB\Collection::distinct() API.

Volver

Contabilizar documentos

En esta página