Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Recuperar valores distintos de campo

En esta guía, puedes aprender cómo usar la librería de PHP de MongoDB para recuperar los valores distintos de un campo especificado en una colección.

Dentro de una colección, diferentes documentos podrían contener valores diferentes para un solo campo. Por ejemplo, un documento en una colección restaurants tiene un valor borough de 'Manhattan', y otro tiene un valor borough de 'Queens'. Al usar la librería PHP de MongoDB, puedes recuperar todos los valores únicos que un campo contiene 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 los conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde tu aplicación PHP, instancia un MongoDB\Client que se conecte a un clúster Atlas y asigna el siguiente valor a tu variable $collection:

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

Para saber cómo crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de ejemplo, consulta la guía MongoDB Primeros Pasos.

Para recuperar los valores distintos de un campo especificado, llama al método MongoDB\Collection::distinct() y pasa el nombre del campo para el que deseas 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.

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

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"

Puedes modificar el comportamiento del método distinct() pasando un arreglo que especifique valores de opciones. La siguiente tabla describe algunas opciones que puede establecer para personalizar la operación:

Opción
Descripción

collation

La intercalación que se utilizará para la operación. Para aprender más, consulte la sección intercalación de esta página.
Tipo: array|object

maxTimeMS

La cantidad máxima de tiempo en milisegundos que la operación puede ejecutar.
Tipo: integer

comment

El comentario que se va a adjuntar a la operación.
Tipo: cualquier tipo de BSON válido

readPreference

La preferencia de lectura que se utilizará para la operación. Para aprender más, consulta Preferencia de lectura en el manual del servidor.
Tipo: MongoDB\Driver\ReadPreference

hint

El índice que se utilizará para la operación.
Tipo: string|object

El siguiente ejemplo recupera los valores distintos del campo name para todos los documentos que tienen un valor de campo borough de 'Bronx' y un valor de campo cuisine de 'Pizza'. También especifica el campo comment en una arreglo de opciones para agregar 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 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

locale

(Obligatorio) Especifica la localización de los componentes internacionales para Unicode (ICU). Para obtener una lista de las configuraciones regionales admitidas, consulte Configuraciones regionales de intercalación y parámetros predeterminados en el manual de MongoDB Server.

Tipo de dato: string

caseLevel

(Opcional) Especifica si se debe incluir la comparación de mayúsculas y minúsculas.

Cuando se establece en true, el comportamiento de comparación depende del valor del campo strength:

- Si strength es 1, la librería PHP compara los caracteres base
y las mayúsculas y minúsculas.

- Si strength es 2, la librería PHP compara los caracteres base,
los signos diacríticos, otras diferencias secundarias y las mayúsculas y minúsculas.

- Si strength es cualquier otro valor, este campo se ignora.

Cuando se establece en false, la librería PHP no incluye la comparación de mayúsculas y minúsculas en el nivel de intensidad 1 o 2.

Tipo de dato: bool
Por defecto: false

caseFirst

(Opcional) Especifica el orden de clasificación de las diferencias de mayúsculas y minúsculas durante las comparaciones de nivel terciario.

Tipo de dato: string
Por defecto: "off"

strength

(Opcional) Especifica el nivel de comparación que se debe realizar, tal como se define en la documentación de ICU.

Tipo de dato: int
Por defecto: 3

numericOrdering

(Opcional) Especifica si el driver compara las strings numéricas como números.

Si se establece en true, la librería PHP compara las strings numéricas como números. Por ejemplo, al comparar las strings "10" y "2", la librería utiliza los valores numéricos de las strings y trata "10" como mayor que "2".

Si se establece en false, la librería PHP compara las strings numéricas como strings. Por ejemplo, al comparar las strings "10" y "2", la librería compara un carácter a la vez y trata "10" como menor que "2".

Para obtener más información, consulte Restricciones de intercalación en el manual de MongoDB Server.

Tipo de dato: bool
Por defecto: false

alternate

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

Tipo de dato: string
Por defecto: "non-ignorable"

maxVariable

(Opcional) Especifica qué caracteres considera la librería ignorables cuando el campo alternate se establece en "shifted".

Tipo de dato: string
Por defecto: "punct"

backwards

(Opcional) Especifica si las strings que contienen diacríticos se ordenan de atrás hacia adelante en la string.

Tipo de dato: bool
Por defecto: false

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.

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