MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да създадете индекси, нечувствителни към главни букви в MongoDB

Как да създадете индекс на MongoDB, нечувствителен към главни букви

В тази публикация ще ви покажем как да изградите индекси, нечувствителни към главни и малки букви, в MongoDB с помощта на Collations, нова функция, пусната от MongoDB във версия 3.4.

Какво представляват индексите, нечувствителни към главни букви?

Индексите, нечувствителни към малки и малки букви, поддържат заявки, които извършват сравнения на низове, без да се съобразява с регистрите на буквите, а с поддръжката на MongoDB 3.4 на Collation, те вече са възможни за изграждане. Съпоставянето ви дава възможност да зададете специфични за езика правила за сравнение на низове. Тъй като предишните версии на MongoDB не поддържаха Collation, вие сте били ограничени до извършване на сравнение на индекси, чувствителни към главни букви. В сценариите, при които е необходимо поведение, независимо от главните букви, единствената опция беше да преобразувате/съхраните всичките си низове в главни или малки букви и след това да направите сравнението. Както можете да си представите, това причинява много проблеми със заявките и операциите с индекс.

Свойството Collation може да бъде зададено на ниво колекция или изрично при създаване на индекс.

  1. Задайте свойството за събиране на ниво колекция

    Ако е зададен на ниво колекция, не е необходимо да се посочва с всяка включена команда create-index, тъй като индексът наследява Collation на колекцията . Освен ако не е посочено изрично по време на създаването, колекцията няма свързана с нея Collation. Можете да определите подробностите за сравняването на вашата колекция, като използвате командите, предоставени по-долу:

    >db.createCollection("test")
    >db.getCollectionInfos({name: test'});
    [
    {
    "name" : "test",
    "type" : "collection",
    "options" : {
    
    },
    "info" : {
    "readOnly" : false
    },
    "idIndex" : {
    "v" : 2,
    "key" : {
    "_id" : 1
    },
    "name" : "_id_",
    "ns" : "test.test"
    }
    }
    ]
    
  2. Задайте свойството за сортиране при създаване на индекс

    Ето как можете изрично да посочите Collation, когато създавате колекция:

    >db.createCollection("test2", { collation: { locale: 'en_US', strength: 2 } } );
    
    >db.getCollectionInfos({name: 'test2'})
    [
    {
    "name" : "test2",
    "type" : "collection",
    "options" : {
    "collation" : {
    "locale" : "en_US",
    "caseLevel" : false,
    "caseFirst" : "off",
    "strength" : 2,
    "numericOrdering" : false,
    "alternate" : "non-ignorable",
    "maxVariable" : "punct",
    "normalization" : false,
    "backwards" : false,
    "version" : "57.1"
    }
    },
    "info" : {
    "readOnly" : false
    },
    "idIndex" : {
    "v" : 2,
    "key" : {
    "_id" : 1
    },
    "name" : "_id_",
    "ns" : "test.test2",
    "collation" : {
    "locale" : "en_US",
    "caseLevel" : false,
    "caseFirst" : "off",
    "strength" : 2,
    "numericOrdering" : false,
    "alternate" : "non-ignorable",
    "maxVariable" : "punct",
    "normalization" : false,
    "backwards" : false,
    "version" : "57.1"
    }
    }
    }
    ]
    
    
  3. Задайте свойството на Collation, докато създавате индекс

    Имате и опцията изрично да зададете Collation за индекс, докато го изграждате. Например добавяне на „индекс“ към свойството name на тестовата колекция с локал „en“ и сила 2:

    >db.test.createIndex( { name: 1}, { collation: { locale: 'en', strength: 2 } })
    
  4. Как да заявявате с помощта на Collation

    Свойството Collation трябва да бъде посочено в момента на заявката, за да се използва индексът, изграден с Collation:

    db.test.find({name:'blah'})
    

    Как да заявявате индекси, нечувствителни към главни и малки букви с Collation в MongoDBC, щракнете за Tweet

  5. Посочете съпоставяне във вашата заявка

    Тази заявка няма да използва индекса, посочен по-горе, тъй като Collation не е посочено. За да използваме Collation, трябва да го посочим изрично в заявката:

    db.test.find({name:'blah'}).collation({ locale: 'en', strength: 2 })
    

    Дори ако колекцията ви има съпоставяне по подразбиране, все пак трябва да посочите Сравняването в заявката си. В противен случай MongoDB няма да използва конкретния индекс:

  6. Сравняване при надграждане от по-стара версия на MongoDB (3.2.x)

    Ако надстроите от по-стара версия на MongoDB (напр. 3.2.x), съществуващите индекси няма да поддържат Collation. За да стартирате Collation и да работи, първата ви стъпка е да се уверите, че всички нови функции на 3.4.x са включени:

    db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
    
    Надстройте версията на #MongoDB, за да създадете индекси, нечувствителни към главни букви, като използвате CollationClick To Tweet

    Повече информация за несъвместимостта е предоставена в бележки към версията на MongoDB 3.x. Моля, имайте предвид, че след като направите тези стъпки, е по-трудно да се върнете към 3.2. Следващата ни стъпка е да проверим версията на вашия индекс.

    След като надстроите до съвместимост 3.4, можете да създавате нови индекси, като следвате стъпките, които очертахме по-рано. Ако създавате голям индекс, моля, използвайте заданието за изграждане на подвижен индекс ScaleGrid, за да добавите вашите индекси:


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да оптимизирате производителността на MongoDB

  2. Сравняване на модели за внедряване за MongoDB

  3. неуспешно с грешка 10068:невалиден оператор:$oid

  4. Как да получите няколко реда в списък, разделен със запетая в SQL

  5. натиснете нова стойност към вътрешния масив на mongodb - mongodb/php