MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara Membuat Indeks Case-Insensitive di MongoDB

Cara Membuat Indeks MongoDB Case-Insensitive

Dalam postingan ini, kami akan menunjukkan cara membuat indeks case-insensitive di MongoDB menggunakan Collations, fitur baru yang dirilis oleh MongoDB dalam versi 3.4.

Apa yang dimaksud dengan Indeks Case-Insensitive?

Indeks yang tidak peka huruf besar/kecil mendukung kueri yang melakukan perbandingan string tanpa memperhatikan huruf huruf, dan dengan dukungan MongoDB 3.4 untuk Collation, ini sekarang dapat dibuat. Pengumpulan memberi Anda kemampuan untuk menentukan aturan khusus bahasa untuk perbandingan string. Karena versi MongoDB sebelumnya tidak mendukung Collation, Anda dibatasi untuk melakukan perbandingan indeks peka huruf besar-kecil. Dalam skenario yang memerlukan perilaku peka huruf besar/kecil, satu-satunya opsi adalah mengonversi/menyimpan semua string Anda menjadi huruf besar atau kecil, lalu melakukan perbandingan. Seperti yang dapat Anda bayangkan, ini menyebabkan banyak masalah dengan kueri dan operasi indeks.

Properti Collation dapat disetel pada tingkat koleksi atau secara eksplisit saat membuat indeks.

  1. Setel Properti Pengumpulan pada tingkat koleksi

    Jika disetel pada tingkat koleksi, itu tidak perlu ditentukan dengan setiap perintah create-index aktif karena indeks mewarisi Collation of the collection . Kecuali ditentukan secara eksplisit selama waktu pembuatan, koleksi tidak memiliki Collation yang terkait dengannya. Anda dapat menentukan detail Collation dari koleksi Anda menggunakan perintah yang disediakan di bawah ini:

    >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. Setel Properti Pengumpulan saat membuat indeks

    Berikut cara menentukan Kolasi secara eksplisit saat membuat koleksi:

    >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. Setel Properti Pengumpulan saat membuat indeks

    Anda juga memiliki opsi untuk secara eksplisit mengatur Kolasi untuk indeks saat membangunnya. Misalnya, menambahkan "indeks" pada properti nama kumpulan tes dengan lokal 'en' dan kekuatan 2:

    >db.test.createIndex( { name: 1}, { collation: { locale: 'en', strength: 2 } })
    
  4. Cara Query menggunakan Collation

    Properti Collation harus ditentukan pada waktu kueri untuk menggunakan indeks yang dibuat dengan Collation:

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

    Cara menanyakan indeks case-insensitive dengan Collation di MongoDBKlik Untuk Tweet

  5. Tentukan Pengumpulan di Kueri Anda

    Kueri ini tidak akan menggunakan indeks yang ditentukan di atas karena Susunan tidak ditentukan. Untuk memanfaatkan Kolasi, kita perlu menentukannya secara eksplisit dalam kueri:

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

    Bahkan jika koleksi Anda memiliki Collation default, Anda masih perlu menentukan Collation dalam kueri Anda. Jika tidak, MongoDB tidak akan menggunakan indeks spesifik:

  6. Kolasi saat memutakhirkan dari versi MongoDB yang lebih lama (3.2.x)

    Jika Anda mengupgrade dari versi MongoDB yang lebih lama (Misalnya 3.2.x), indeks yang ada tidak akan mendukung Collation. Untuk mengaktifkan dan menjalankan Collation, langkah pertama Anda adalah memastikan semua fitur baru 3.4.x diaktifkan:

    db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
    
    Tingkatkan versi #MongoDB untuk membuat indeks peka huruf besar/kecil menggunakan CollationClick To Tweet

    Informasi lebih lanjut tentang ketidaksesuaian tersedia di catatan rilis MongoDB 3.x. Harap perhatikan bahwa setelah Anda melakukan langkah-langkah ini, lebih sulit untuk menurunkan versi kembali ke 3.2. Langkah kami selanjutnya adalah memeriksa versi indeks Anda.

    Setelah Anda meningkatkan kompatibilitas ke 3.4, Anda dapat membuat indeks baru dengan mengikuti langkah-langkah yang kami uraikan sebelumnya. Jika Anda membuat indeks besar, gunakan tugas pembangunan indeks bergulir ScaleGrid untuk menambahkan indeks Anda:


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 2 Cara Mendapatkan Ukuran Dokumen di MongoDB

  2. Bagaimana cara menghapus entri duplikat dari array?

  3. MongoDB:Hanya mengambil dokumen yang dibuat dalam 24 jam terakhir?

  4. Meteor tanpa mongo

  5. Bidang luwak &unik