Les index sont très importants dans toute base de données, et avec MongoDB ce n’est pas différent. Avec l’utilisation des index, effectuer des requêtes dans MongoDB devient plus efficace.
Si vous aviez une collection avec des milliers de documents sans index, et qu’ensuite vous faites une requête pour trouver certains documents, alors dans ce cas, MongoDB aurait besoin de scanner toute la collection pour trouver les documents. Mais si vous aviez des index, MongoDB utiliserait ces index pour limiter le nombre de documents qui devaient être recherchés dans la collection.
Les index sont des ensembles de données spéciaux qui stockent une partie des données de la collection. Puisque les données sont partielles, il devient plus facile de lire ces données. Cet ensemble partiel stocke la valeur d’un champ spécifique ou un ensemble de champs ordonnés par la valeur du champ.
Dans ce tutoriel, vous apprendrez –
- Comprendre l’impact des index
- Comment créer des index : createIndex()
- Comment trouver des index : getindexes()
- Comment supprimer des index : dropindex()
Comprendre l’impact des index
Maintenant même si dès l’introduction nous avons vu que les index sont bons pour les requêtes, mais avoir trop d’index peut ralentir d’autres opérations comme l’opération Insert, Delete et Update.
Si les opérations d’insertion, de suppression et de mise à jour effectuées sur les documents sont fréquentes, alors les index devraient changer aussi souvent, ce qui ne serait qu’une surcharge pour la collection.
L’exemple ci-dessous montre un exemple des valeurs de champ qui pourraient constituer un index dans une collection. Un index peut soit être basé sur un seul champ dans la collection, soit être basé sur plusieurs champs dans la collection.
Dans l’exemple ci-dessous, l’Employeeid « 1 » et EmployeeCode « AA » sont utilisés pour indexer les documents de la collection. Ainsi, lorsqu’une recherche par requête est effectuée, ces index seront utilisés pour trouver rapidement et efficacement les documents requis dans la collection.
Donc même si la requête de recherche est basée sur le code employé « AA », ce document serait retourné.
Comment créer des index : createIndex()
Créer un index dans MongoDB se fait en utilisant la méthode « createIndex ».
L’exemple suivant montre comment ajouter un index à une collection. Supposons que nous avons notre même collection d’employés qui a les noms de champs de « Employeeid » et « EmployeeName ».
db.Employee.createIndex({Employeeid:1})
Explication du code :
- La méthode createIndex est utilisée pour créer un index basé sur le « Employeeid » du document.
- Le paramètre ‘1’ indique que lorsque l’index est créé avec les valeurs du champ « Employeeid », elles doivent être triées par ordre croissant. Veuillez noter que ceci est différent du champ _id (Le champ id est utilisé pour identifier de manière unique chaque document dans la collection) qui est créé automatiquement dans la collection par MongoDB. Les documents seront maintenant triés en fonction de l’Employeeid et non du champ _id.
Si la commande est exécutée avec succès, la sortie suivante sera affichée :
Sortie :
- Le numIndexesBefore : 1 indique le nombre de valeurs de champs (Les champs réels dans la collection) qui étaient là dans les index avant l’exécution de la commande. N’oubliez pas que chaque collection possède le champ _id qui compte également comme une valeur de Champ pour l’index. Comme le champ d’index _id fait partie de la collection lors de sa création initiale, la valeur de numIndexesBefore est de 1.
- Le numIndexesAfter : 2 indique le nombre de valeurs du champ qui étaient là dans les index après l’exécution de la commande.
- Ici, la sortie « ok : 1 » en sortie précise que l’opération a réussi, et le nouvel index est ajouté à la collection.
Le code ci-dessus montre comment créer un index basé sur une valeur de champ, mais on peut aussi créer un index basé sur plusieurs valeurs de champ.
L’exemple suivant montre comment cela peut être fait ;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Explication du code :
- La méthode createIndex prend désormais en compte les valeurs de champs multiples qui feront que l’index sera désormais créé sur la base de « Employeeid » et « EmployeeName ». L’Employeeid:1 et EmployeeName:1 indique que l’index doit être créé sur ces 2 valeurs de champ avec le :1 indiquant qu’il doit être en ordre croissant.
Comment trouver des index : getindexes()
La recherche d’un index dans MongoDB se fait en utilisant la méthode « getIndexes ».
L’exemple suivant montre comment cela peut être fait ;
db.Employee.getIndexes()
Explication du code :
- La méthode getIndexes est utilisée pour trouver tous les index d’une collection.
Si la commande est exécutée avec succès, la sortie suivante sera affichée :
Sortie :
- La sortie renvoie un document qui montre juste qu’il y a 2 index dans la collection qui est le champ _id, et l’autre est le champ id de l’employé. Le :1 indique que les valeurs des champs dans l’index sont créées dans l’ordre croissant.
Comment supprimer les index : dropindex()
La suppression d’un index dans MongoDB se fait en utilisant la méthode dropIndex.
L’exemple suivant montre comment cela peut être fait ;
db.Employee.dropIndex(Employeeid:1)
Explication du code :
- La méthode dropIndex prend les valeurs de champ requises qui doivent être retirées de l’index.
Si la commande est exécutée avec succès, la sortie suivante sera affichée :
Sortie :
- Le nIndexesWas : 3 indique le nombre de valeurs de champs qui étaient là dans les index avant l’exécution de la commande. N’oubliez pas que chaque collection possède le champ _id qui compte également comme une valeur Field à l’index.
- La sortie ok : 1 sortie précise que l’opération a réussi et que le champ « Employeeid » est supprimé de l’index.
Pour supprimer tous les index en même temps dans la collection, on peut utiliser la commande dropIndexes.
L’exemple suivant montre comment cela peut être fait.
db.Employee.dropIndex()
Explication du code :
- La méthode dropIndexes fera tomber tous les index sauf l’index _id.
Si la commande est exécutée avec succès, la sortie suivante sera affichée :
Sortie :
- Le nIndexesWas : 2 indique le nombre de valeurs de champ qui étaient présentes dans les index avant l’exécution de la commande.
- Rappelez-vous encore que chaque collection a le champ _id qui compte aussi comme une valeur de Champ à l’index, et qui ne sera pas supprimé par MongoDB et c’est ce que ce message indique.
- L’ok : 1 sortie précise que l’opération a réussi.
Summary
- La définition d’index est importante pour une recherche plus rapide et efficace des documents dans une collection.
- Les index peuvent être créés en utilisant la méthode createIndex. Les index peuvent être créés sur un seul champ ou sur plusieurs valeurs de champ.
- Les index peuvent être trouvés en utilisant la méthode getIndexes.
- Les index peuvent être supprimés en utilisant la méthode dropIndex pour les index uniques ou dropIndexes pour supprimer tous les index.
.