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

Bagaimana cara membuat kueri case-insensitive di Mongodb?

Solusi Chris Fulstow akan berfungsi (+1), namun, mungkin tidak efisien, terutama jika koleksi Anda sangat besar. Ekspresi reguler yang tidak di-root (tidak diawali dengan ^ , yang mengaitkan ekspresi reguler ke awal string), dan yang menggunakan i tanda untuk ketidakpekaan huruf besar/kecil tidak akan menggunakan indeks, meskipun indeks itu ada.

Opsi alternatif yang mungkin Anda pertimbangkan adalah mendenormalisasi data Anda untuk menyimpan versi huruf kecil name bidang, misalnya sebagai name_lower . Anda kemudian dapat menanyakannya secara efisien (terutama jika diindeks) untuk pencocokan tepat yang tidak peka huruf besar/kecil seperti:

db.collection.find({"name_lower": thename.toLowerCase()})

Atau dengan kecocokan awalan (ekspresi reguler yang di-root) sebagai:

db.collection.find( {"name_lower":
    { $regex: new RegExp("^" + thename.toLowerCase(), "i") } }
);

Kedua kueri ini akan menggunakan indeks pada name_lower .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara Mengonfigurasi Nama Koleksi MongoDb Untuk Kelas di Data Musim Semi

  2. MongoDB $min

  3. Solusi MongoDB untuk dokumen di atas ukuran 16mb?

  4. MongoError:Tidak dapat mengekstrak kunci geografis dari objek dengan Jenis:Titik

  5. MongoDB sebagai layanan windows dan menyiapkan replicaSet