MongoCollection::deleteIndex

(PECL mongo >=0.9.0)

MongoCollection::deleteIndexSupprime un index de la collection

Description

public MongoCollection::deleteIndex ( string|array $keys ) : array

Cette méthode est identique à:

<?php

public function deleteIndexes($keys) {
  
$indexName $this->toIndexString($keys);

  return 
$this->db->command(array(
    
"deleteIndexes" => $this->getName(),
    
"index" => $indexName,
  ));
}

?>

Chaque index se voit recevoir un nom unique lors de sa création. Il est souvent généré par le driver, en se basant sur la clé de l'index, et sur l'ordre ou le type de l'index, mais des noms personalisés peuvent aussi être spécifiés avec la méthode MongoCollection::createIndex() (option "name").

Malheureusement, la méthode MongoCollection::deleteIndex() ne peut supprimer les indexes possédant un nom personalisé en raison d'une compatibilité ascendante. Lorsqu'un argument est fourni, il est supposé être le nom d'un seul champ dans un index croissant (i.e. le nom "x_1" sera utilisé pour l'argument "x"). Si un tableau ou un objet est fourni, un nom d'index est généré comme si l'argument avait été passé à la méthode MongoCollection::createIndex().

Pour pouvoir supprimer un index possédant un nom personalisé avec le driver PHP, la commande de base de données deleteIndexes doit être utilisée. Actuellement, un index dont le nom est "myIndex" peut être supprimé avec le driver PHP en exécutant :

<?php

$db
->command(array(
  
"deleteIndexes" => $collection->getName(),
  
"index" => "myIndex",
));

?>

Pour déterminer le nom d'un index avec le driver PHP, vous pouvez interroger la collection system.indexes de la base de données, et regarder le champ "name" de chaque résultat. Le champ "ns" indiquera la collection dont l'index fait parti.

Liste de paramètres

keys

Un tableau spécifiant les champs de l'index, comme clés. Pour chaque champ, la valeur est soit la direction de l'index, soit le » type d'index. Si la direction est spécifiée, la valeur 1 correspondra à un sens croissant, et la valeur -1, au sens décroissant.

Si une chaîne de caractères est fournie, on supposera qu'il s'agit du nom d'un seul champ d'un index croissant.

Valeurs de retour

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

Exemples

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 et supprime un index
$c->createIndex(array("i"=>1));
$c->deleteIndex("i");

// crée et supprime un index multi-clé
$c->ensureIndex(array("j" => 1"k" => 1));
$c->deleteIndex(array("j" => 1"k" => 1));

?>

Voir aussi

add a note add a note

User Contributed Notes 1 note

up
-2
nanhe dot kumar at gmail dot com
11 years ago
<?php
/*
How can delete Index through Index name.
*/
function deleteIndex($db, $collection, $indexName) {
    if (
class_exists("MongoClient")) {
       
$m = new MongoClient();
    } else {
       
$m = new Mongo();
    }
   
$indexes = $m->{$db}->{$collection}->getIndexInfo();
    foreach (
$indexes as $index) {
        if (
$index['name'] === $indexName) {
            return
$m->{$db}->command(array("deleteIndexes" => $this->m->{$db}->{$collection}->getName(), "index" =>$index['key']));
            break;
        }
    }
    return
false;
}   
   
$response=deleteIndex('student','class','roll');
    echo
"<pre>;
    print_r(
$response);
    echo "
</pre>";

?>

Array
(
    [nIndexesWas] => 2
    [ok] => 1
)
To Top