MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Indice univoco Mongo senza distinzione tra maiuscole e minuscole

Prima di MongoDB versione 3.4 non siamo stati in grado di creare un indice con senza distinzione tra maiuscole e minuscole .

Nella versione 3.4 ha collation opzione che consente agli utenti di specificare regole specifiche della lingua per il confronto di stringhe , come le regole per le lettere maiuscole e gli accenti.

L'opzione di confronto ha la seguente sintassi:

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

dove le località il campo è obbligatorio; tutti gli altri campi sono opzionali .

Per creare un indice senza distinzione tra maiuscole e minuscole dobbiamo utilizzare il campo obbligatorio locale e forza campo per il livello di confronto delle stringhe. strength consente la rabbia di valore 1 - 5 . leggi di più sulle regole di confronto

L'attributo forza determina se vengono presi in considerazione gli accenti o le maiuscole quando si fascicola o si abbina il testo

Esempio:

se forza=1 quindi ruolo =ruolo =ruolo

se forza=2 quindi ruolo =ruolo

se forza=3 quindi ruolo

Documento a livello di confronto

Quindi dobbiamo usare strength=2 per creare un indice. come:

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

NB :collation l'opzione non è disponibile per testo indici.