L'index est un moyen typique d'accélérer les requêtes dans un système de base de données normal. Il n'y a aucune différence entre MongoDB et un système de base de données basé sur des documents. Cet article donne un aperçu de l'index dans MongoDB, pour l'optimisation des requêtes.
Index en mongo :
Par défaut
_id est un objet ObjectId de type BSON de 12 octets qui garantit l'unicité au sein de la collection. L'ObjectId est généré en fonction de l'horodatage, de l'ID de la machine, de l'ID du processus et d'un compteur incrémentiel local au processus.
Champ unique
Pour un index à champ unique et des opérations de tri, l'ordre de tri (c'est-à-dire croissant ou décroissant) de la clé d'index n'a pas d'importance car MongoDB peut parcourir l'index dans les deux sens. La valeur d'index est le type d'index. Par exemple, 1 indique l'ordre croissant et -1 spécifie l'ordre décroissant.
db.friends.createIndex( { "name" : 1 } )
Champ composé
L'ordre des champs répertoriés dans un index composé a une importance. Par exemple, si un index composé se compose de { userid :1, score :-1 }, l'index trie d'abord par userid puis, dans chaque valeur d'userid, trie par score.
db.products.createIndex( { "item": 1, "stock": 1 } )
Clé multiple
MongoDB utilise plusieurs index pour indexer le contenu dans un tableau. MongoDB crée des entrées d'index distinctes pour chaque élément du tableau. Vous n'avez pas besoin de créer explicitement plusieurs clés.
Index de texte
Une collection peut avoir au plus un index de texte.
Coût des performances pour l'index de texte :
les index de texte peuvent être volumineux. Ils contiennent une entrée d'index pour chaque mot post-racine unique dans chaque champ indexé pour chaque document inséré.
les index de texte auront un impact sur le débit d'insertion car MongoDB doit ajouter une entrée d'index pour chaque mot post-racine unique dans chaque champ indexé de chaque nouveau document source.
db.reviews.createIndex( { comments: "text" } )
Indice de hachage
Interrogez le contenu par sa valeur hachée. Le hachage est une fonction à calculer par sa valeur. La valeur hachée est conçue pour être une valeur distincte. Le seul avantage est qu'il est si rapide, ce qui prend O(1) au plus mais par contrat l'arbre de recherche binaire normal prendra O(Log(N)). Le hachage sera théoriquement plus rapide que la mise en œuvre normale de l'arbre de recherche binaire. Mais l'inconvénient est que l'index de hachage effectuant la recherche de plage sera extrêmement lent par rapport à l'index normal.
Ceci est un exemple en python pour construire un index de hachage
db.active.createIndex( { a: "hashed" } )