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
/ /

MongoDB\Collection::createIndexes()

MongoDB\Collection::createIndexes()

Crear uno o más índices para la colección.

function createIndexes(
array $indexes,
array $options = []
): string[]
$indexes : arreglo

Los índices que se crean en la colección.

Por ejemplo, lo siguiente especifica un índice único en el campo username y un índice compuesto en los campos email y createdAt:

[
[ 'key' => [ 'username' => -1 ], 'unique' => true ],
[ 'key' => [ 'email' => 1, 'createdAt' => 1 ] ],
]
$options : arreglo

Una matriz que especifica las opciones deseadas.

Nombre
Tipo
Descripción

comment

mixto

Permite a los usuarios especificar un comentario arbitrario para ayudar a rastrear la operación a través de generador de perfilesde base de datos, salidacurrentOpy registros.

Esta opción está disponible desde MongoDB 4.4 y, si se especifica para una versión de servidor anterior, dará lugar a una excepción en tiempo de ejecución.

Novedades en la versión 1.13.

commitQuorum

cadena|entero

Especifica cuántos nodos portadores de datos de un set de réplicas, incluido el primario, deben completar la construcción de índices con éxito antes de que el primario marque los índices como listos.

Esta opción acepta los mismos valores para el campo w en un nivel de confirmación de escritura (write concern), más "votingMembers", lo que indica todos los nodos votantes con datos.

Esto no es compatible con versiones de servidor anteriores a 4.4 y generará una excepción en el momento de ejecución si se utiliza.

Novedades en la versión 1.7.

maxTimeMS

entero

El límite de tiempo acumulado en milisegundos para las operaciones de procesamiento en el cursor. MongoDB aborta la operación en el siguiente punto de interrupción..

Nueva en la versión 1.3.

sesión

Sesión de cliente para asociar a la operación.

Nueva en la versión 1.3.

writeConcern

nivel de confirmación de escritura (write concern) a usar en la operación. Por defecto, se aplica el nivel de confirmación de escritura (write concern) de la colección.

No es posible especificar una preocupación de escritura para operaciones individuales como parte de una transacción. En su lugar, configure la writeConcern opción al iniciar la transacción.

Los nombres de los índices creados como un arreglo de cadenas.

MongoDB\Exception\UnsupportedException si se utilizan opciones que no son compatibles con el servidor seleccionado (porcollation readConcernwriteConcernejemplo,,,).

MongoDB\Exception\InvalidArgumentException por errores relacionados con el análisis de parámetros u opciones.

MongoDB\Driver\Exception\RuntimeException para otros errores en el nivel de extensión (por ejemplo, errores de conexión).

El parámetro $indexes es un arreglo de documentos de especificación de índice. Cada elemento en $indexes debe ser un arreglo o un objeto con un campo key, que corresponde al parámetro $key de createIndex(). El arreglo u objeto puede incluir otros campos que correspondan a las opciones de índice aceptadas por createIndex(). Para obtener una lista completa de las opciones de creación de índices admitidas, consulta la referencia del comando createIndexes en el manual de MongoDB.

Por ejemplo, el siguiente parámetro $indexes crea dos índices. La primera es un índice único ascendente en el campo username y el segundo es un índice 2dsphere en el campo loc con un nombre personalizado:

[
[ 'key' => [ 'username' => 1 ], 'unique' => true ],
[ 'key' => [ 'loc' => '2dsphere' ], 'name' => 'geo_index' ],
]

El siguiente ejemplo crea dos índices en la colección restaurants de la base de datos test. Un índice es un índice compuesto en los campos borough y cuisine, y el otro es un índice 2dsphere en el campo loc con un nombre personalizado.

<?php
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants');
$indexNames = $collection->createIndexes([
[ 'key' => [ 'borough' => 1, 'cuisine' => 1] ],
[ 'key' => [ 'loc' => '2dsphere'], 'name' => 'geo_index' ],
]);
var_dump($indexNames);

La vista de salida se ilustraría como sigue:

array(2) {
[0]=>
string(19) "borough_1_cuisine_1"
[1]=>
string(9) "geo_index"
}

Volver

createIndex()

En esta página