Overview
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.
Aplicación de muestra
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:
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.
Copia el siguiente código y pégalo en un nuevo archivo
.php.Copia un ejemplo de código de esta página y pégalo en las líneas especificadas del archivo.
1 2 3 require __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(); }
Índice de un solo campo
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.
Índice compuesto
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.
Multikey Index
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.
Índice geoespacial
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.
Índice único
El siguiente ejemplo crea un índice único ascendente en el campo especificado:
$indexName = $collection->createIndex(['<field name>' => 1], ['unique' => true]);
Índice de comodines
El siguiente ejemplo crea un índice comodín ascendente en la colección:
$indexName = $collection->createIndex(['$**' => 1]);
Índice del clúster
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);
Text Index
El siguiente ejemplo crea un índice de texto en el campo de cadena especificado:
$indexName = $collection->createIndex(['<field name>' => 'text']);
Índices de listas
El siguiente ejemplo imprime una lista de índices en la colección especificada:
foreach ($collection->listIndexes() as $indexInfo) { echo $indexInfo; }
Eliminar un índice
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.
Gestión del índice de búsqueda de MongoDB
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.
Crear índice de búsqueda
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>'], );
Índices de búsqueda de listas
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; }
Actualizar índices de búsqueda
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', ], ], ]], );
Eliminar índices de búsqueda
El siguiente ejemplo elimina un índice de búsqueda de MongoDB con el nombre especificado:
$collection->dropSearchIndex('<Search index name>');