SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
INDEXATION
Mme Ines Slimene
Ines_slimene@yahoo.fr
Plan
oCréation d’index
oUtilisation de explain
oTypes d’index :
◦ Index unique
◦ Index composé
◦ Index partiel
◦ Index textuel
◦ Index géo-spatiale
https://inesslimene.wixsite.com/moncours INDEXATION 2
Indexation
o Très similaire aux SGBDR, l'indexation dans MongoDB se fait sur un ou plusieurs champs.
o Permet d'améliorer les performances de recherche.
o Les indexes sont stockés au niveau des collections.
o Le fonctionnement interne est très proche de ce que l’on trouve dans les SGBD actuels.
o Un champ peu requêté n'a aucun intérêt à être indexé
o Utilisé dans une requête : select, update, sort
o Recherche plus rapide mais écriture plus lente car mise a jour des index
https://inesslimene.wixsite.com/moncours INDEXATION 3
Création et suppression
o Création d’un index
db.students.createIndex({"student_id" : 1},{name:"ind1",unique: true})
o Affichage des index d’une collection
db.students.getIndexes()
o Suppression d’un index
db.students.dropIndex("student_id" : 1)
db.students.dropIndex("ind1")
o Suppression de tous les indexes
db.students.dropIndexes()
https://inesslimene.wixsite.com/moncours INDEXATION 4
Index composé
db.students.createIndex({"student_id" : 1,"type":1, "score":1},{name:"ind2"})
o Dans le cas d’un index composé, MongoDB utilise l’index dans les requêtes
dont les critères de recherche sont :
◦ Student_id
◦ Student_id,type
◦ Student_id, type, score
o MongoDB ne peut pas utiliser cet index dans les requêtes dont les critères de
recherche sont :
◦ type
◦ score
◦ Type, score
https://inesslimene.wixsite.com/moncours INDEXATION 5
Index unique
o Index unique: pas de duplication de valeurs.
o Ne peut être crée que pour des champs a valeur unique.
db.students.createIndex({"student_id" : 1},{unique: true})
o Remarque :
oSi un document n’a pas de valeur pour le champ indexé, l’index aura la valeur
nulle.
oMongoDB permet l’insertion d’une seule valeur nulle pour un index unique
https://inesslimene.wixsite.com/moncours INDEXATION 6
Sparse
{"userid" : "newbie" }
{"userid" : "abby", "score" : 82 }
{"userid" : "nina", "score" : 90 }
o sparse : indexer que les documents contenant des valeurs non nulles de
student_id
db.scores.createIndex( { score: 1 } , { sparse: true } )
db.scores.find().sort( { score: -1 } ) // n’utilise pas l’index
Forcer l’utilisation de l’index db.scores.find().sort( { score: -1 } ).hint( { score: 1 } )
https://inesslimene.wixsite.com/moncours INDEXATION 7
Index partiel
o Une version plus général de sparse.
db.contacts.createIndex({ name: 1 },{ partialFilterExpression: { name: { $exists:
true } } })
o Exemple :
db.students.createIndex({ score: 1 },{ partialFilterExpression: { score: { $gt: 50 } }
})
o Utilisation index :
db. students.find( { score: 62 } ) // index utilisé
db. students.find( { score: 15 } ) // n’utilise pas l’index
https://inesslimene.wixsite.com/moncours INDEXATION 8
Utilisation de explain
explain : retourne les informations sur l’utilisation des index
db.students.find({student_id : 50}).explain("executionStats")
https://inesslimene.wixsite.com/moncours INDEXATION 9
Hint
o Forcer l’utilisation de l'index student_id
db.students.find().hint({« student_id" : 1})
https://inesslimene.wixsite.com/moncours INDEXATION 10
Recherche textuelle
db.livres.createIndex( { description: "text" } )
db.livres.find({$text:{$search:"serveur"}})
db.livres.find({$text:{$search:"serveur",$caseSensitive: true}})
db.livres.find({$text:{$search:"Javascript cote"}},
{score:{ $meta:"textScore"}}).sort({score:{$meta:"textScore"}})
db.livres.find({$text:{$search:""Javascript cote""}},{description:1})
https://inesslimene.wixsite.com/moncours INDEXATION 11
Index géo-spatiale
o On utilise l’index de type ‘2d’ pour les données stockées en tant que points avec deux coordonnées.
Exemple :
{"city": "GOODWATER", "loc": [-86.078149, 33.074642], "pop": 3813, "state": "AL", "_id": "35072"}
o Créer un index géo-spatiale. Type:1 : ordre ascendant
db.cities.createIndex({loc:'2d',type:1})
o Les indexes de type ‘2dsphere’ supportent les données stockées en tant qu’objet de type GeoJSON
Exemple :
{"_id":111,"location":{"coordinates":[-73.961704,40.662942],"type":"Point"},"name":"Wendy'S"}
o Créer un index géo-spatiale sphérique
db.stores.createIndex({location:'2dsphere'})
https://inesslimene.wixsite.com/moncours INDEXATION 12
Index géo-spatiale : Exemples
o index géo-spatiale
Exemple : Afficher les trois stores qui existent a proximité de la position[50,50]
db.cities.find({loc:{$near:[50,50]}}).limit(3)
o index géo-spatiale sphérique
Pour chercher un point de type GeoJSON, l’operateur $near requiert un index de type 2dsphere.
Exemple : Afficher les stores qui sont proche de max 1km du point dont les coordonnées sont
[-130, 39]
db.stores.find({ location:{ $near:{ $geometry: { type: "Point", coordinates: [-130, 39]},
$maxDistance:1000 } } })
https://inesslimene.wixsite.com/moncours INDEXATION 13

Mais conteúdo relacionado

Semelhante a Indexation

Accès aux bases de données via jdbc
Accès aux bases de données via jdbcAccès aux bases de données via jdbc
Accès aux bases de données via jdbcRachid Lajouad
 
Présentation mongoDB et mongoId
Présentation mongoDB et mongoIdPrésentation mongoDB et mongoId
Présentation mongoDB et mongoIdvtabary
 
MongoDB_presentation_ye.pptx
MongoDB_presentation_ye.pptxMongoDB_presentation_ye.pptx
MongoDB_presentation_ye.pptxZALIMAZA
 
MongoDB_presentation_p.pptx
MongoDB_presentation_p.pptxMongoDB_presentation_p.pptx
MongoDB_presentation_p.pptxZALIMAZA
 
Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewLudovic Piot
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide
 
Analyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurAnalyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurMicrosoft Technet France
 
Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2dhugomallet
 
OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015Tarik Zakaria Benmerar
 
MongoDB_presentation_example.pptx
MongoDB_presentation_example.pptxMongoDB_presentation_example.pptx
MongoDB_presentation_example.pptxZALIMAZA
 
MongoDB_presentation_tts.pptx
MongoDB_presentation_tts.pptxMongoDB_presentation_tts.pptx
MongoDB_presentation_tts.pptxZALIMAZA
 
1425583156389.pptx
1425583156389.pptx1425583156389.pptx
1425583156389.pptxtirike6016
 
MongoDB_presentation_o.pptx
MongoDB_presentation_o.pptxMongoDB_presentation_o.pptx
MongoDB_presentation_o.pptxZALIMAZA
 
MongoDB_presentation.pptx
MongoDB_presentation.pptxMongoDB_presentation.pptx
MongoDB_presentation.pptxZALIMAZA
 
MongoDB_presentation_xmls.pptx
MongoDB_presentation_xmls.pptxMongoDB_presentation_xmls.pptx
MongoDB_presentation_xmls.pptxZALIMAZA
 
MongoDB_presentation_Moyou.pptx
MongoDB_presentation_Moyou.pptxMongoDB_presentation_Moyou.pptx
MongoDB_presentation_Moyou.pptxZALIMAZA
 

Semelhante a Indexation (20)

Accès aux bases de données via jdbc
Accès aux bases de données via jdbcAccès aux bases de données via jdbc
Accès aux bases de données via jdbc
 
Présentation mongoDB et mongoId
Présentation mongoDB et mongoIdPrésentation mongoDB et mongoId
Présentation mongoDB et mongoId
 
MongoDB_presentation_ye.pptx
MongoDB_presentation_ye.pptxMongoDB_presentation_ye.pptx
MongoDB_presentation_ye.pptx
 
MongoDB_presentation_p.pptx
MongoDB_presentation_p.pptxMongoDB_presentation_p.pptx
MongoDB_presentation_p.pptx
 
Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overview
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic Search
 
Analyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurAnalyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL Serveur
 
Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2d
 
Pg jsonb format 16-9
Pg jsonb format 16-9Pg jsonb format 16-9
Pg jsonb format 16-9
 
OOP and Design Patterns
OOP and Design PatternsOOP and Design Patterns
OOP and Design Patterns
 
OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015
 
MongoDB_presentation_example.pptx
MongoDB_presentation_example.pptxMongoDB_presentation_example.pptx
MongoDB_presentation_example.pptx
 
Intro mongodb
Intro mongodbIntro mongodb
Intro mongodb
 
MongoDB_presentation_tts.pptx
MongoDB_presentation_tts.pptxMongoDB_presentation_tts.pptx
MongoDB_presentation_tts.pptx
 
1425583156389.pptx
1425583156389.pptx1425583156389.pptx
1425583156389.pptx
 
MongoDB_presentation_o.pptx
MongoDB_presentation_o.pptxMongoDB_presentation_o.pptx
MongoDB_presentation_o.pptx
 
MongoDB_presentation.pptx
MongoDB_presentation.pptxMongoDB_presentation.pptx
MongoDB_presentation.pptx
 
Cours 3 les directives
Cours 3 les directivesCours 3 les directives
Cours 3 les directives
 
MongoDB_presentation_xmls.pptx
MongoDB_presentation_xmls.pptxMongoDB_presentation_xmls.pptx
MongoDB_presentation_xmls.pptx
 
MongoDB_presentation_Moyou.pptx
MongoDB_presentation_Moyou.pptxMongoDB_presentation_Moyou.pptx
MongoDB_presentation_Moyou.pptx
 

Mais de Ines Slimene (14)

Spark
SparkSpark
Spark
 
Redis
RedisRedis
Redis
 
Crud
CrudCrud
Crud
 
Cassandra
CassandraCassandra
Cassandra
 
Agregation
AgregationAgregation
Agregation
 
Pig
PigPig
Pig
 
Neo4j
Neo4jNeo4j
Neo4j
 
Mapreduce
MapreduceMapreduce
Mapreduce
 
Introduction nosql
Introduction nosqlIntroduction nosql
Introduction nosql
 
Introduction
IntroductionIntroduction
Introduction
 
Hive
HiveHive
Hive
 
Hdfs
HdfsHdfs
Hdfs
 
Hbase
HbaseHbase
Hbase
 
Hadoop
HadoopHadoop
Hadoop
 

Último

Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 

Último (19)

Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 

Indexation

  • 2. Plan oCréation d’index oUtilisation de explain oTypes d’index : ◦ Index unique ◦ Index composé ◦ Index partiel ◦ Index textuel ◦ Index géo-spatiale https://inesslimene.wixsite.com/moncours INDEXATION 2
  • 3. Indexation o Très similaire aux SGBDR, l'indexation dans MongoDB se fait sur un ou plusieurs champs. o Permet d'améliorer les performances de recherche. o Les indexes sont stockés au niveau des collections. o Le fonctionnement interne est très proche de ce que l’on trouve dans les SGBD actuels. o Un champ peu requêté n'a aucun intérêt à être indexé o Utilisé dans une requête : select, update, sort o Recherche plus rapide mais écriture plus lente car mise a jour des index https://inesslimene.wixsite.com/moncours INDEXATION 3
  • 4. Création et suppression o Création d’un index db.students.createIndex({"student_id" : 1},{name:"ind1",unique: true}) o Affichage des index d’une collection db.students.getIndexes() o Suppression d’un index db.students.dropIndex("student_id" : 1) db.students.dropIndex("ind1") o Suppression de tous les indexes db.students.dropIndexes() https://inesslimene.wixsite.com/moncours INDEXATION 4
  • 5. Index composé db.students.createIndex({"student_id" : 1,"type":1, "score":1},{name:"ind2"}) o Dans le cas d’un index composé, MongoDB utilise l’index dans les requêtes dont les critères de recherche sont : ◦ Student_id ◦ Student_id,type ◦ Student_id, type, score o MongoDB ne peut pas utiliser cet index dans les requêtes dont les critères de recherche sont : ◦ type ◦ score ◦ Type, score https://inesslimene.wixsite.com/moncours INDEXATION 5
  • 6. Index unique o Index unique: pas de duplication de valeurs. o Ne peut être crée que pour des champs a valeur unique. db.students.createIndex({"student_id" : 1},{unique: true}) o Remarque : oSi un document n’a pas de valeur pour le champ indexé, l’index aura la valeur nulle. oMongoDB permet l’insertion d’une seule valeur nulle pour un index unique https://inesslimene.wixsite.com/moncours INDEXATION 6
  • 7. Sparse {"userid" : "newbie" } {"userid" : "abby", "score" : 82 } {"userid" : "nina", "score" : 90 } o sparse : indexer que les documents contenant des valeurs non nulles de student_id db.scores.createIndex( { score: 1 } , { sparse: true } ) db.scores.find().sort( { score: -1 } ) // n’utilise pas l’index Forcer l’utilisation de l’index db.scores.find().sort( { score: -1 } ).hint( { score: 1 } ) https://inesslimene.wixsite.com/moncours INDEXATION 7
  • 8. Index partiel o Une version plus général de sparse. db.contacts.createIndex({ name: 1 },{ partialFilterExpression: { name: { $exists: true } } }) o Exemple : db.students.createIndex({ score: 1 },{ partialFilterExpression: { score: { $gt: 50 } } }) o Utilisation index : db. students.find( { score: 62 } ) // index utilisé db. students.find( { score: 15 } ) // n’utilise pas l’index https://inesslimene.wixsite.com/moncours INDEXATION 8
  • 9. Utilisation de explain explain : retourne les informations sur l’utilisation des index db.students.find({student_id : 50}).explain("executionStats") https://inesslimene.wixsite.com/moncours INDEXATION 9
  • 10. Hint o Forcer l’utilisation de l'index student_id db.students.find().hint({« student_id" : 1}) https://inesslimene.wixsite.com/moncours INDEXATION 10
  • 11. Recherche textuelle db.livres.createIndex( { description: "text" } ) db.livres.find({$text:{$search:"serveur"}}) db.livres.find({$text:{$search:"serveur",$caseSensitive: true}}) db.livres.find({$text:{$search:"Javascript cote"}}, {score:{ $meta:"textScore"}}).sort({score:{$meta:"textScore"}}) db.livres.find({$text:{$search:""Javascript cote""}},{description:1}) https://inesslimene.wixsite.com/moncours INDEXATION 11
  • 12. Index géo-spatiale o On utilise l’index de type ‘2d’ pour les données stockées en tant que points avec deux coordonnées. Exemple : {"city": "GOODWATER", "loc": [-86.078149, 33.074642], "pop": 3813, "state": "AL", "_id": "35072"} o Créer un index géo-spatiale. Type:1 : ordre ascendant db.cities.createIndex({loc:'2d',type:1}) o Les indexes de type ‘2dsphere’ supportent les données stockées en tant qu’objet de type GeoJSON Exemple : {"_id":111,"location":{"coordinates":[-73.961704,40.662942],"type":"Point"},"name":"Wendy'S"} o Créer un index géo-spatiale sphérique db.stores.createIndex({location:'2dsphere'}) https://inesslimene.wixsite.com/moncours INDEXATION 12
  • 13. Index géo-spatiale : Exemples o index géo-spatiale Exemple : Afficher les trois stores qui existent a proximité de la position[50,50] db.cities.find({loc:{$near:[50,50]}}).limit(3) o index géo-spatiale sphérique Pour chercher un point de type GeoJSON, l’operateur $near requiert un index de type 2dsphere. Exemple : Afficher les stores qui sont proche de max 1km du point dont les coordonnées sont [-130, 39] db.stores.find({ location:{ $near:{ $geometry: { type: "Point", coordinates: [-130, 39]}, $maxDistance:1000 } } }) https://inesslimene.wixsite.com/moncours INDEXATION 13