Académique Documents
Professionnel Documents
Culture Documents
Chapitre44::MongoDB
MongoDB
Agrégation
Indexation
Ines
InesSlimen
Slimen
1
Plan
Introduction
Utilisation de explain
Création et affichage d’un index
Suppression d’un index
Types d’index
2
Introduction
Les index améliorent les performances en lecture, mais peuvent avoir un impact négatif sur
les performances en écriture, car l'insertion d'un document nécessite la mise à jour de tous
les index.
Dans Mongodb les index sont très similaire aux SGBD relationnels, l'indexation dans MongoDB
se fait sur un ou plusieurs champs.
3
Utilisation de explain
explain permet de retourner les informations sur l’utilisation desindex
Exemple :
db.students.find({student_id : 50}).explain("executionStats")
4
Création et affichage d’un index
Création d’un index
db.stud e n ts. c r e ate Ind ex( { "student _id": 1} )
Affichage des index d’une collection
d b .stu d e nts . getI n d exe s ( )
Information sur l’index crée
db.students.find({student_id : 50}).explain("executionStats")
5
Suppression d’un index
6
Types d’index -Index composé
L'indexation dans MongoDB se fait sur un ou plusieurs champs. Cela crée un index sur plusieurs champs.
Dans le casd’un index composé,MongoDB utilise l’index danslesrequêtes dont les critères de recherche sont :
student_id
student_id,type
student_id, type, score
db.students.find({student_id : 50}).explain("executionStats")
MongoDB ne peut pas utiliser cet index dans les requêtes dont les critères de recherche sont :
type
score
type, score
db.students.find({type:"Essay"}).explain("executionStats")
Il est impératif de respecter l’ordre de création des index lors de requêtage de la collection. 7
Types d’index -Index unique
Appliquer l'unicité à l'index défini (unique ou composé)
db.students.createIndex({"student_id":1},{unique:true})
Remarques :
Siun document n’apasde valeur pour le champ indexé, l’index aura la valeur nulle.
MongoDB permet l’insertion d’une seulevaleur nulle pour un index unique.
8
Types d’index – sparse
Insertion de documents
db.scores.insert({"userid" : "newbie" })
db.scores.insert({"userid" : "abby", "score" : 82 })
db.scores.insert({"userid" : "nina", "score" : 90 })
sparse permet d’indexer uniquement les documents contenant des valeurs non nulles d’un champ.
Utilisation de l’index :
10
Type d’index -hint
Exemple :
Forcer l’utilisation de l'index student_id :
db.students.find().hint({"student_id" : 1}).explain("executionStats")
11
Types d’index -Index textuel
M o n g o D B fo u r n i t d e s i n d e x d e te x te p o u r p re n d r e e n c h a rg e l e s re q u ê te s d e re c h e rc h e
d e te x te s u r l e c o n te n u d e c h a î n e . L e s i n d e x d e te x te p e u v e n t i n c l u re n ' i m p o r te q u e l
c h a m p d o n t l a v a l e u r e s t u n e c h a î n e o u u n ta b l e a u d ' é l é m e n t s d e c h a î n e .
E xe m p l e s :
d b . l i v r e s . c r e a t e I n d e x ( { description:" tex t " } )
d b . l i v re s .f i n d ( { $ te x t : { $ s e a rc h : " s e r v e u r " } } )
12
Types d’index -Index géo-spatial (1/2)
On utilise l’index de type ‘2d’ pour les données stockéesen tant que points avecdeux coordonnées.
Exemple 1 :
{"city": "GOODWATER", "loc": [-86.078149, 33.074642], "pop": 3813, "state": "AL", "_id": "35072"}
13
Types d’index -Index géo-spatial (2/2)
Création d’un document
db.places.insert ( { name: "Central Park", location: [ -73.97, 40.77], category: " Parks" } )
14