MongoCollection::deleteIndex

(PECL mongo >=0.9.0)

MongoCollection::deleteIndexSupprime un index de la collection

Description

public array MongoCollection::deleteIndex ( string|array $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.

Liste de paramètres

keys

Le ou les champs dont il faut supprimer l'index.

Valeurs de retour

Retourne la réponse de la base de données.

Exemples

Exemple #1 Exemple avec MongoCollection::deleteIndex()

<?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));
?>
LoadingChargement en cours