MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Groß-/Kleinschreibung des eindeutigen Mongo-Index wird nicht berücksichtigt

Vor MongoDB Version 3.4 Index konnte nicht erstellt werden mit Groß-/Kleinschreibung .

In Version 3.4 hat collation Option, mit der Benutzer sprachspezifische Regeln festlegen können für String-Vergleich , wie Regeln für Großbuchstaben und Akzentzeichen.

Die Kollatierungsoption hat die folgende Syntax:

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

wo das Gebietsschema Feld ist Pflichtfeld; alle anderen Felder sind optional .

Um einen Index ohne Berücksichtigung der Groß-/Kleinschreibung zu erstellen, müssen wir das Pflichtfeld locale verwenden und Stärke Feld für String-Vergleichsebene. strength erlaubt Wertebereich 1 - 5 . Lesen Sie mehr über Sortierung

Das Stärkeattribut bestimmt, ob Akzente oder Groß-/Kleinschreibung beim Sortieren oder Abgleichen von Text berücksichtigt werden

Beispiel:

wenn Stärke=1 dann Rolle =Rolle =Rolle

wenn Stärke=2 dann Rolle =Rolle

wenn Stärke=3 dann Rolle

Vergleichsebene doc

Also müssen wir strength=2 verwenden Index zu erstellen. wie:

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

NB :collation Option ist für Text nicht verfügbar Indizes.