Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Índices para la optimización de query

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.

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

  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->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();
}

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

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.

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 los í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 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',
],
],
]],
);

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