(PECL mongo >=0.9.0)
MongoCollection::deleteIndex — Supprime un index de la collection
$keys
)Cette méthode est identique à:
<?php
public function deleteIndexes($keys) {
// toIndexString est une méthode protégée qui transforme les chaines, tableaux
// et objets en noms d'index
$index = $this->toIndexString($keys);
return $this->db->command(array("deleteIndexes" => $this->getName(),
"index" => $index);
}
?>
Chaque index possède un nom unique à sa création. C'est l'utilisateur qui le précise en général (avec l'option "name" de MongoCollection::ensureIndex()) ou alors il est généré par le pilote depuis une combinaisons de clés. Ce nom est alors utilisé par MongoCollection::deleteIndex().
Malheureusement, la méthode MongoCollection::ensureIndex() génère des noms très différents de la commande shell à cause de problèmes de compatibilité ascendante, et MongoCollection::deleteIndex() ne peut supprimer les index dont les noms sont personnalisés. De ce fait, la meilleure manière de supprimer des index créés via le shell ou avec des noms personnalisés est d'appeler directement la commande deleteIndexes de la base de données.
Ainsi, si vous avez appelé un index "superfast query", vous ne pouvez le supprimer qu'avec le driver PHP en exécutant :
<?php
$db->command(array("deleteIndexes" => $collection->getName(), "index" => "superfast query");
?>
Pour trouver le nom d'un index, vous pouvez requêter la collection system.indexes d'une base de données et chercher le champ name.
keys
Le ou les champs dont il faut supprimer l'index.
Retourne le nom de la clé générée en cas de succès, NULL
sinon.
Exemple #1 Exemple avec MongoCollection::deleteIndex()
This example passes the function string and array parameters.
<?php
$m = new MongoClient();
$c = $m->example->indices;
// crée un index
$c->ensureIndex(array("i"=>1));
// supprime l'index
$c->deleteIndex("i");
// créé un index à colonnes multiples
$c->ensureIndex(array("j" => 1, "k" => 1));
// supprime cet index
$c->deleteIndex(array("j" => 1, "k" => 1));
?>