Dans MongoDB, le dropIndexes()
permet de supprimer un ou plusieurs index d'une collection.
Pour supprimer un seul index, transmettez le nom de l'index ou son document de définition/spécification. S'il s'agit d'un index de texte, vous ne pouvez spécifier que le nom de l'index.
Pour supprimer plusieurs index, transmettez les noms d'index dans un tableau.
Pour supprimer tous les index (sauf pour le _id
index), ne transmettez aucun argument.
Exemples d'index
Supposons que nous ayons une collection appelée pets
. Nous pouvons utiliser getIndexes()
pour voir de quels index il dispose :
db.pets.getIndexes()
Résultat :
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "type" : 1 }, "name" : "type_1" }, { "v" : 2, "key" : { "name" : 1 }, "name" : "name_1", "hidden" : true }, { "v" : 2, "key" : { "weight" : -1 }, "name" : "weight_-1" } ]
Dans ce cas, nous avons quatre index. Le premier est l'index par défaut pour le _id
domaine. Cet index est créé automatiquement lorsque vous créez une collection, et il ne peut pas être supprimé.
Les trois autres index peuvent être abandonné.
Supprimer un index unique
Pour supprimer un seul index, transmettez le nom de l'index ou son document de spécification.
Exemple :
db.pets.dropIndexes("weight_-1")
Dans ce cas, nous transmettons le nom de l'index.
Exécution qui donne le résultat suivant :
{ "nIndexesWas" : 4, "ok" : 1 }
Cela nous indique que l'index a été supprimé.
Alternativement, nous aurions pu supprimer l'index en passant son document de spécification :
db.pets.dropIndexes( { "weight" : -1 } )
Supprimer plusieurs index
Si vous souhaitez supprimer plusieurs index, mais pas tous, transmettez les noms d'index dans un tableau.
Exemple :
db.pets.dropIndexes( [ "type_1", "name_1" ])
Résultat :
{ "nIndexesWas" : 3, "ok" : 1 }
A ce stade, revérifions notre liste d'index :
db.pets.getIndexes()
Résultat :
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Comme prévu, trois index ont été supprimés et il n'en reste plus qu'un (et il ne peut pas être supprimé).
Supprimer tous les index
Vous pouvez supprimer tous les index en appelant le dropIndexes()
méthode sans aucun argument.
Pour cet exemple, déposons les index sur une collection appelée products
. Cette collection a quatre index comme suit :
db.products.getIndexes()
Résultat :
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "product.$**" : 1 }, "name" : "product.$**_1" }, { "v" : 2, "key" : { "sizes" : 1 }, "name" : "sizes_1" }, { "v" : 2, "key" : { "stock" : -1 }, "name" : "stock_-1" } ]
Supprimons maintenant tous les index :
db.products.dropIndexes()
Résultat :
{ "nIndexesWas" : 4, "msg" : "non-_id indexes dropped for collection", "ok" : 1 }
Comme le message y faisait allusion, tous les index ont été supprimés à l'exception de _id
indice. Cet index ne peut pas être supprimé.
Vérifions à nouveau les index.
db.products.getIndexes()
Résultat :
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
Comme prévu, le _id
index est le seul qui reste.
Le dropIndexes()
la méthode est un wrapper autour des dropIndexes
commande.
Documentation MongoDB
Voir la documentation MongoDB pour plus d'informations sur les dropIndexes()
méthode.