(PECL mongo >=0.9.0)
MongoCollection::deleteIndex — Elimina un índice de esta colección
$keys
)Este método es identico a:
<?php
public function deleteIndexes($keys) {
// toIndexString es un método 'protected' que convierte los strings, arrays, y objetos
// en nombres de índices
$index = $this->toIndexString($keys);
return $this->db->command(array("deleteIndexes" => $this->getName(),
"index" => $index);
}
?>
Cuando se crea un índice, se le asigna un nombre único. Generalmente, será establecido por el usuario (con la opción "name" de MongoCollection::ensureIndex()) o generado por el driver a partir de una combinación de nombres de clave y de direcciones. Usaremos después este nombre con MongoCollection::deleteIndex() para eliminar el índice.
Desafortunadamente, el método MongoCollection::ensureIndex() genera nombres ligeramente diferentes a los que crea la shell y, por motivos de retro-compatibilidad, MongoCollection::deleteIndex() no puede eliminar índices con nombres creados a medida. Por esa reazón, la mejor forma de eliminar índices creados por la shell o con nombres a medida, es llamar directamente al comando de la base de datos deleteIndexes.
De esta forma, si se quisiera eliminar un índice al que llamamos "superfast query", sólo se podría eliminar con el controlador de PHP, ejecutando:
<?php
$db->command(array("deleteIndexes" => $collection->getName(), "index" => "superfast query");
?>
Para averiguar cómo se llama un índice, puede consultar colección system.indexes de una base de datos y analizar el campo name (nombre).
keys
Campo o campos en los que eliminar el índice.
Devuelve el nombre de la clave generada en caso de éxito, o NULL
en caso contrario.
Ejemplo #1 Ejemplo de MongoCollection::deleteIndex()
Este ejemplo ilustra cómo pasar tanto un stringo como un array a la función.
<?php
$m = new MongoClient();
$c = $m->example->indices;
// crea un índice
$c->ensureIndex(array("i"=>1));
// elimina un índice
$c->deleteIndex("i");
// crea un índice multi-clave
$c->ensureIndex(array("j" => 1, "k" => 1));
// elimina un índice multi-clave
$c->deleteIndex(array("j" => 1, "k" => 1));
?>