Sommaire

Les Indexindex

Exercice 1

L’index suivant assurera une couverture de nos requêtes les plus fréquentes :

db.salles.createIndex({ "capacite": 1, "adresse.codePostal": 1 })

Un explain appliqué à nos requêtes montre que le collscan qui était fait avant la mise en place de l’index a disparu au profit de notre index dont le nom par défaut est capacite_1_adresse.codePostal_1.

Cet index pourra également couvrir les tris suivants :

db.salles.find({}).sort({"capacite": 1}) 
db.salles.find({}).sort({ "capacite": 1, "adresse.codePostal": 1 })

Pour détruire notre index, il suffira d’exécuter :

db.salles.dropIndex("capacite_1_adresse.codePostal_1")

Exercice 2

Le doute n’est pas permis, la solution consiste à créer un index textuel ! Nous prendrons soin de dire que la langue utilisée dans notre collection est le français :

db.salles.createIndex({"adresse.voie": "text"}, {"default_language": "french"})

Exercice 3

Il va nous falloir créer un un index de type 2dsphere pour prendre en charge cette requête géospatiale :

db.salles.createIndex({"localisation": "2dsphere"})

Si nous ne le faisons pas, la requête produira une erreur :

 planner returned error: unable to find index for $geoNear query

Exercice 4

Notre index partiel va consister à cibler un sous-ensemble des valeurs prises ...