sql >> Base de Datos >  >> NoSQL >> MongoDB

Índice único de Mongo insensible a mayúsculas y minúsculas

Antes de MongoDB versión 3.4 no pudimos crear índice con insensible a mayúsculas y minúsculas .

En la versión 3.4 tiene collation opción que permite a los usuarios especificar reglas específicas del idioma para comparación de cadenas , como reglas para mayúsculas y minúsculas.

La opción de intercalación tiene la siguiente sintaxis:

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

donde la configuración regional el campo es obligatorio; todos los demás campos son opcionales .

Para crear un índice que no distinga entre mayúsculas y minúsculas, necesitamos usar el campo obligatorio locale y fuerza campo para el nivel de comparación de cadenas. strength permite rango de valor 1 - 5 . leer más sobre colación

El atributo de intensidad determina si se tienen en cuenta los acentos o las mayúsculas y minúsculas al cotejar o hacer coincidir el texto

Ejemplo:

si fuerza=1 entonces rol =Rol =rol

si fuerza=2 entonces rol =Rol

si fuerza=3 entonces rol

Documento de nivel de comparación

Entonces necesitamos usar strength=2 para crear índice. como:

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

N.B :collation la opción no está disponible para texto índices.