sql >> Database >  >> NoSQL >> MongoDB

Mongo unieke index niet hoofdlettergevoelig

Voorafgaand aan MongoDB versie 3.4 we konden geen index maken met hoofdlettergevoelig .

In versie 3.4 heeft collation optie waarmee gebruikers taalspecifieke regels kunnen opgeven voor tekenreeksvergelijking , zoals regels voor letters en accenttekens.

De sorteeroptie heeft de volgende syntaxis:

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

waar de landinstelling veld is verplicht; alle andere velden zijn optioneel .

Om een ​​index te maken die niet hoofdlettergevoelig is, moeten we het verplichte veld locale gebruiken en kracht veld voor het tekenreeksvergelijkingsniveau. strength staat waardewoede toe 1 - 5 . lees meer over sorteren

Het sterkte-attribuut bepaalt of er rekening wordt gehouden met accenten of hoofdletters bij het sorteren of matchen van tekst

Voorbeeld:

if sterkte=1 dan rol =Rol =rol

if sterkte=2 dan rol =Rol

if sterkte=3 dan rol

Vergelijkingsniveau doc

We moeten dus strength=2 . gebruiken index te maken. zoals:

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

NB :collation optie is niet beschikbaar voor tekst indexen.



  1. Hoe kunt u uw MongoDB-applicatie-upgrades testen?

  2. Hoe het lopende totaal berekenen met aggregaat?

  3. TypeError:ObjectId('') is niet JSON-serialiseerbaar

  4. MongoDB $switch