Ce chapitre présente les indexes MongoDB. Tout comme MYSQL, MongoDB prend également en charge les indexes. La différence réside dans le fait que MongoDB permet d'ajouter des indexes à n'importe quel champ imbriqué de la structure JSON, dans le même but d'améliorer l'efficacité des requêtes.

Types d'index MongoDB

Index sur un seul champ

Similaire à MYSQL, la création d'un index pour un seul champ

Format:

db.collection.createIndex( { nom_champ: direction_tri(1 ou -1) } )

Remarque : La direction de tri 1 représente l'ordre croissant, et -1 représente l'ordre décroissant.

Exemple 1:

db.records.createIndex( { score: 1 } )

Crée un index pour le champ score.

Exemple 2:

db.records.createIndex( { "location.state": 1 } )

Crée un index pour le champ JSON imbriqué location.state.

Index composé

Comme MYSQL, plusieurs champs peuvent être combinés pour créer un index, accélérant la vitesse des requêtes composées.

Format:

db.collection.createIndex( { <champ1>: <type>, <champ2>: <type2>, ... } )

Exemple:

db.products.createIndex( { "item": 1, "stock": 1 } )

Crée un index composé pour les champs item et stock, tous deux dans l'ordre croissant (1 représente l'ordre croissant).

Index de texte (Index texte intégral)

L'index de texte (text) est principalement utilisé pour prendre en charge la recherche en texte intégral.

Remarque : Une collection ne permet qu'un seul index de texte, mais un index de texte peut inclure plusieurs champs.

Exemple:

db.stores.createIndex( { name: "text", description: "text" } )

Crée un index de texte intégral pour les champs name et description.

Remarque : Pour plus de détails, veuillez vous référer à la section Index Textuel Intégral.

Index Spatiaux (Index GEO)

Principalement utilisé pour prendre en charge les requêtes liées aux informations géographiques, prenant principalement en charge deux types d'index : 2dsphere et 2d. Pour plus de détails, veuillez vous référer à la section Requête Géo-spatiale.

Suppression des Indexes

Pour lister tous les indexes dans une collection :

db.pets.getIndexes()

Pour supprimer l'index catIdx de la collection pets :

db.pets.dropIndex( "catIdx" )