MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Índice exclusivo do Mongo não diferencia maiúsculas de minúsculas


Antes do MongoDB versão 3.4 não foi possível criar índice com não diferencia maiúsculas de minúsculas .

Na versão 3.4 tem collation opção que permite aos usuários especificar regras específicas do idioma para comparação de strings , como regras para letras maiúsculas e acentos.

A opção de agrupamento tem a seguinte sintaxe:
collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}

onde a localidade campo é obrigatório; todos os outros campos são opcionais .

Para criar um índice sem distinção entre maiúsculas e minúsculas, precisamos usar o campo obrigatório locale e força campo para nível de comparação de string. strength permite intervalo de valor 1 - 5 . leia mais sobre colação

O atributo de força determina se os acentos ou maiúsculas são levados em consideração ao agrupar ou combinar texto

Exemplo:

se força=1 então função =função =função

se força=2 então função =Função

se força=3 então função

Documento de nível de comparação

Portanto, precisamos usar strength=2 para criar índice. Como:
db.collectionName.createIndex(
  { name: 1, formula: 1, type: 1 },
  { 
    name: "fertilizer_idx",
    collation: {locale: "en", strength: 2},
    unique: true
  }
)

N.B :collation a opção não está disponível para texto índices.