MongoDB - Indexation

Les index prennent en charge la résolution efficace des requêtes. Sans index, MongoDB doit analyser chaque document d'une collection pour sélectionner les documents qui correspondent à l'instruction de requête. Cette analyse est très inefficace et nécessite MongoDB pour traiter un grand volume de données.

Les index sont des structures de données spéciales, qui stockent une petite partie de l'ensemble de données sous une forme facile à parcourir. L'index stocke la valeur d'un champ ou d'un ensemble de champs spécifique, triée par la valeur du champ comme spécifié dans l'index.

La méthode createIndex ()

Pour créer un index, vous devez utiliser la méthode createIndex () de MongoDB.

Syntaxe

La syntaxe de base de createIndex() méthode est la suivante ().

>db.COLLECTION_NAME.createIndex({KEY:1})

Ici la clé est le nom du champ sur lequel vous voulez créer l'index et 1 est pour l'ordre croissant. Pour créer un index dans l'ordre décroissant, vous devez utiliser -1.

Exemple

>db.mycol.createIndex({"title":1})
{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 1,
	"numIndexesAfter" : 2,
	"ok" : 1
}
>

Dans createIndex() méthode, vous pouvez passer plusieurs champs, pour créer un index sur plusieurs champs.

>db.mycol.createIndex({"title":1,"description":-1})
>

Cette méthode accepte également la liste d'options (qui sont facultatives). Voici la liste -

Paramètre Type La description
Contexte Booléen Construit l'index en arrière-plan afin que la création d'un index ne bloque pas les autres activités de la base de données. Spécifiez true pour créer en arrière-plan. La valeur par défaut estfalse.
unique Booléen Crée un index unique afin que la collection n'accepte pas l'insertion de documents où la ou les clés d'index correspondent à une valeur existante dans l'index. Spécifiez true pour créer un index unique. La valeur par défaut estfalse.
Nom chaîne Le nom de l'index. S'il n'est pas spécifié, MongoDB génère un nom d'index en concaténant les noms des champs indexés et l'ordre de tri.
clairsemé Booléen Si true, l'index fait uniquement référence aux documents avec le champ spécifié. Ces index utilisent moins d'espace mais se comportent différemment dans certaines situations (en particulier les tris). La valeur par défaut estfalse.
expireAfterSeconds entier Spécifie une valeur, en secondes, comme TTL pour contrôler la durée pendant laquelle MongoDB conserve les documents de cette collection.
poids document Le poids est un nombre allant de 1 à 99 999 et dénote la signification du champ par rapport aux autres champs indexés en termes de score.
langage par défaut chaîne Pour un index de texte, la langue qui détermine la liste des mots vides et les règles pour le radical et le tokenizer. La valeur par défaut estEnglish.
language_override chaîne Pour un index de texte, spécifiez le nom du champ dans le document qui contient, la langue pour remplacer la langue par défaut. La valeur par défaut est la langue.

La méthode dropIndex ()

Vous pouvez supprimer un index particulier en utilisant la méthode dropIndex () de MongoDB.

Syntaxe

La syntaxe de base de la méthode DropIndex () est la suivante ().

>db.COLLECTION_NAME.dropIndex({KEY:1})

Ici, la clé est le nom du fichier sur lequel vous voulez créer l'index et 1 est pour l'ordre croissant. Pour créer un index dans l'ordre décroissant, vous devez utiliser -1.

Exemple

> db.mycol.dropIndex({"title":1})
{
	"ok" : 0,
	"errmsg" : "can't find index with key: { title: 1.0 }",
	"code" : 27,
	"codeName" : "IndexNotFound"
}

La méthode dropIndexes ()

Cette méthode supprime plusieurs index (spécifiés) sur une collection.

Syntaxe

La syntaxe de base de la méthode DropIndexes () est la suivante () -

>db.COLLECTION_NAME.dropIndexes()

Exemple

Supposons que nous ayons créé 2 index dans la collection mycol nommée comme indiqué ci-dessous -

> db.mycol.createIndex({"title":1,"description":-1})

L'exemple suivant supprime les index créés ci-dessus de mycol -

>db.mycol.dropIndexes({"title":1,"description":-1})
{ "nIndexesWas" : 2, "ok" : 1 }
>

La méthode getIndexes ()

Cette méthode renvoie la description de tous les index de la collection.

Syntaxe

Voici la syntaxe de base de la méthode getIndexes () -

db.COLLECTION_NAME.getIndexes()

Exemple

Supposons que nous ayons créé 2 index dans la collection mycol nommée comme indiqué ci-dessous -

> db.mycol.createIndex({"title":1,"description":-1})

L'exemple suivant récupère tous les index de la collection mycol -

> db.mycol.getIndexes()
[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_",
		"ns" : "test.mycol"
	},
	{
		"v" : 2,
		"key" : {
			"title" : 1,
			"description" : -1
		},
		"name" : "title_1_description_-1",
		"ns" : "test.mycol"
	}
]
>