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 el trabajo con índices, consulte el Guía de Gestión y Consideraciones del Índice. Para obtener más información sobre cualquiera de los índices mostrados en esta página, consulta 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 tu propia aplicación. Asegúrate de establecer la MONGODB_URI Variable de entorno a la cadena de conexión para tu implementación de MongoDB, y reemplaza los marcadores de posición <database> y <collection> con valores para tu namespace objetivo.
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úrate de tener instalada la librería PHP de MongoDB en tu proyecto. Para obtener más información sobre la instalación de la librería PHP de MongoDB, consulta la guía Descargar e instalar.
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->selectCollection('<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 Extended JSON. Para usar esta función, pegue el siguiente código en su archivo de 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 comodín
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 string especificado:
$indexName = $collection->createIndex(['<field name>' => 'text']);
Enumerar índices
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 borra un índice con el nombre especificado:
$collection->dropIndex('<index name>');
Para aprender más sobre cómo borrar índices, consulta Remover un Índice en la guía de Consideraciones y Gestión de Índices.
Gestión de índices de MongoDB Search
La siguiente secciones contienen ejemplos de código que describen cómo administrar los índices de MongoDB Search y índice de búsqueda vectorial.
Nota
La gestión de MongoDB Search y MongoDB Vector Search Index es asíncrona
La librería de PHP de MongoDB gestiona los índices de búsqueda de MongoDB de forma asíncrona. Los métodos de la librería descritos en las siguientes secciones devuelven la respuesta del servidor de inmediato, pero los cambios en sus indices de búsqueda se producen en segundo plano y pueden no completarse hasta más tarde.
Para obtener más información sobre los índices de búsqueda de MongoDB, consulta 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 los í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 existente de MongoDB Search 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>');