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.