MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Index unique Mongo insensible à la casse

Avant MongoDB version 3.4 nous n'avons pas pu créer d'index avec insensible à la casse .

Dans la version 3.4 a collation option qui permet aux utilisateurs de spécifier des règles spécifiques à la langue pour la comparaison de chaînes , comme les règles pour la casse et les accents.

L'option de classement a la syntaxe suivante :

collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}

où les paramètres régionaux le champ est obligatoire; tous les autres champs sont facultatifs .

Pour créer un index insensible à la casse, nous devons utiliser le champ obligatoire locale et la force champ pour le niveau de comparaison de chaînes. strength autorise la plage de valeurs 1 - 5 . en savoir plus sur le classement

L'attribut de force détermine si les accents ou la casse sont pris en compte lors de l'assemblage ou de la correspondance de texte

Exemple :

si force=1 puis rôle =Rôle =rôle

si force=2 puis rôle =Rôle

si force=3 puis rôle

Document de niveau de comparaison

Nous devons donc utiliser strength=2 pour créer un index. comme :

db.collectionName.createIndex(
  { name: 1, formula: 1, type: 1 },
  { 
    name: "fertilizer_idx",
    collation: {locale: "en", strength: 2},
    unique: true
  }
)

N.B :collation l'option n'est pas disponible pour le texte index.