Docs Menu
Docs Home
/ /

Índices para la optimización de consultas

En esta página, puede ver ejemplos de código copiables que muestran cómo administrar diferentes tipos de índices mediante el uso de la biblioteca PHP MongoDB.

Tip

Para obtener más información sobre cómo trabajar con índices, consulte la Guía de consideraciones y gestión de índices. Para obtener más información sobre cualquiera de los índices que se muestran en esta página, consulte el enlace proporcionado en cada sección.

Para utilizar un ejemplo de esta página, copie el ejemplo de código en el Aplicación de muestra o su propia aplicación. Asegúrese de configurar el MONGODB_URI variable de entorno a la cadena de conexión para su implementación de MongoDB y reemplace los marcadores de posición <database> y <collection> con valores para su espacio de nombres de destino.

Puede utilizar la siguiente aplicación de muestra para probar los ejemplos de código en esta página. Para usar la aplicación de muestra, siga los siguientes pasos:

  1. Asegúrese de tener la biblioteca PHP de MongoDB instalada en su proyecto. Para obtener más información sobre cómo instalarla, consulte la guía de descarga e instalación.

  2. Copia el siguiente código y pégalo en un nuevo archivo .php.

  3. Copia un ejemplo de código de esta página y pégalo en las líneas especificadas del archivo.

1<?php
2
3require __DIR__ . '/../vendor/autoload.php';
4
5$uri = getenv('MONGODB_URI') ?: throw new RuntimeException('Set the MONGODB_URI variable to your Atlas URI that connects to the sample dataset');
6$client = new MongoDB\Client($uri);
7
8$collection = $client->getCollection('<database>', '<collection>');
9
10// Start example code here
11
12// End example code here

Algunos ejemplos utilizan la función toJSON() para representar eventos de cambio, que son documentos BSON, como JSON extendido. Para usar esta función, pegue el siguiente código en el archivo de su aplicación:

function toJSON(object $document): string
{
return MongoDB\BSON\Document::fromPHP($document)->toRelaxedExtendedJSON();
}

El siguiente ejemplo crea un índice ascendente en el campo especificado:

$indexName = $collection->createIndex(['<field name>' => 1]);

Para obtener más información sobre los índices de campo único, consulte la guía Índices de campo único.

El siguiente ejemplo crea un índice compuesto de dos índices ascendentes en los campos especificados:

$indexName = $collection->createIndex(
['<field name 1>' => 1, '<field name 2>' => 1],
);

Para aprender más sobre índices compuestos, consulta la guía de Índices compuestos.

El siguiente ejemplo crea un índice multiclave ascendente en el campo con valor de matriz especificado:

$indexName = $collection->createIndex(['<array field name>' => 1]);

Para obtener más información sobre los índices de claves múltiples, consulte la guía Índices de claves múltiples.

El siguiente ejemplo crea un índice 2dsphere en el campo especificado que tiene valores de objeto GeoJSON:

$indexName = $collection->createIndex(
['<GeoJSON object field>' => '2dsphere'],
);

Para obtener más información sobre el tipo de datos GeoJSON, consulte Objetos GeoJSON en el manual de MongoDB Server.

El siguiente ejemplo crea un índice único ascendente en el campo especificado:

$indexName = $collection->createIndex(['<field name>' => 1], ['unique' => true]);

El siguiente ejemplo crea un índice comodín ascendente en la colección:

$indexName = $collection->createIndex(['$**' => 1]);

Puede crear un índice agrupado al crear una nueva colección en una base de datos específica. El siguiente ejemplo crea una nueva colección con un índice agrupado ascendente en el campo _id:

$options = [
'clusteredIndex' => [
'key' => ['_id' => 1],
'unique' => true,
],
];
$database->createCollection('<collection name>', $options);

El siguiente ejemplo crea un índice de texto en el campo de cadena especificado:

$indexName = $collection->createIndex(['<field name>' => 'text']);

El siguiente ejemplo imprime una lista de índices en la colección especificada:

foreach ($collection->listIndexes() as $indexInfo) {
echo $indexInfo;
}

El siguiente ejemplo elimina un índice con el nombre especificado:

$collection->dropIndex('<index name>');

Para obtener más información sobre cómo eliminar índices, consulte Eliminar un índice en la guía Consideraciones y administración de índices.

Las siguientes secciones contienen ejemplos de código que describen cómo administrar los índices de búsqueda vectorial y de búsqueda de MongoDB.

Nota

La gestión del índice de búsqueda de MongoDB y de búsqueda vectorial de MongoDB es asincrónica

La biblioteca PHP de MongoDB gestiona los índices de búsqueda de MongoDB de forma asíncrona. Los métodos de la biblioteca descritos en las siguientes secciones devuelven la respuesta del servidor inmediatamente, pero los cambios en los índices de búsqueda se realizan en segundo plano y podrían no completarse hasta más tarde.

Para obtener más información sobre los índices de búsqueda de MongoDB, consulte la guía Índices de búsqueda de MongoDB.

El siguiente ejemplo crea un índice de búsqueda de MongoDB en el campo especificado:

$indexName = $collection->createSearchIndex(
['mappings' => ['dynamic' => true]],
['name' => '<Search index name>'],
);

El siguiente ejemplo imprime una lista de índices de búsqueda de MongoDB en la colección especificada:

foreach ($collection->listSearchIndexes() as $indexInfo) {
echo toJSON($indexInfo), PHP_EOL;
}

El siguiente ejemplo actualiza un índice de búsqueda de MongoDB existente con la nueva definición de índice especificada:

$collection->updateSearchIndex(
'<Search index name>',
['mappings' => [
'dynamic' => false,
'fields' => [
'<string field name>' => [
'type' => 'string',
'analyzer' => 'lucene.standard',
],
],
]],
);

El siguiente ejemplo elimina un índice de búsqueda de MongoDB con el nombre especificado:

$collection->dropSearchIndex('<Search index name>');

Volver

JSON extendido

En esta página