Sommaire

Index composés Index:composé

Un index peut porter sur plus d’un champ : c’est ce que l’on appelle un index composé (compound index). Dans ce type d’index, l’ordre dans lequel les champs sont énumérés a son importance. Supprimons notre index idx_age et créons un index composé nommé idx_nom_age qui portera sur le nom puis sur l’âge des personnes :

db.personnes.createIndex({"age": 1, "nom": 1}, {"name": "idx_nom_age"})

L’index sera ordonné d’abord par valeurs croissantes d’âge et par ordre alphabétique de nom ensuite, au sein de chacune des différentes valeurs d’âge.

Lorsqu’un index composé dont le préfixe n’est pas une chaîne de caractères, un tableau ou un sous-document est utilisé avec une collation, une requête n’utilisant pas la bonne collation pour le champ texte indexé peut toutefois s’appuyer sur le préfixe de l’index.

Supposons que notre index précédent ait été créé de cette façon :

db.personnes.createIndex( 
  {"age": 1, "nom": 1},  
  {"name": "idx_nom_age", "collation": { locale: "fr" }} 
)

La requête suivante qui utilise pourtant la collation binaire de base pour la comparaison des chaînes de caractères (et non fr) pourra ...