Sommaire

Index uniques Index:unique

Les index uniques garantissent qu’une valeur donnée apparaîtra au maximum une fois dans l’index. Nous avons vu précédemment qu’un tel index était systématiquement posé sur le champ _id des documents d’une collection et qu’il était par ailleurs impossible de le supprimer ! Dans l’état actuel de notre collection personnes, nous ne pourrions pas poser ce genre d’index sur le champ nom car la plupart des valeurs de ce champ a plusieurs occurrences. Par contre, nous pourrions créer un index unique sur le champ prenom, dont toutes les valeurs sont uniques :

db.personnes.createIndex({"prenom": 1}, {"unique": true})

Désormais, toute tentative d’insérer une personne portant un prénom déjà présent dans un des documents de notre collection se soldera par un cuisant échec. Évidemment, poser un index unique sur un champ qui a de très fortes probabilités de contenir des doublons est une assez mauvaise décision.

Par ailleurs, maintenant que notre champ prenom fait l’objet d’une contrainte d’unicité, nous ne pourrons pas insérer plus d’un document qui ne contienne pas ce champ. L’insertion suivante échoue en partie parce que, prenom étant marqué null lors de l’insertion du premier document, il n’est pas possible d’insérer un second document dont le champ ...