MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB dropIndexes()

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.