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

tidak dapat menggunakan regex di $in operator di mongodb

Anda perlu membungkus elemen dalam array dengan RegExp objek yaitu

regex = [new RegExp("sai", "i"), new RegExp("test", "i"),...]

Anda dapat menggunakan map() metode untuk memetakan elemen dalam larik dengan pembungkus RegExp ke larik baru yang kemudian dapat Anda gunakan dalam kueri regex dengan $in :

var x = ["sai","test","jacob","justin"],
    regex = x.map(function (e) { return new RegExp(e, "i"); });

db.users.find({"profile.firstName": { "$in": regex } });

Menggunakan $in dapat cukup efisien dengan array kecil tetapi tidak begitu baik dengan daftar besar karena akan melewati indeks untuk menemukan dokumen yang cocok, atau menelusuri seluruh koleksi jika tidak ada indeks untuk digunakan.

Selain menggunakan $in dengan ekspresi reguler , Anda dapat menggunakan pola regex yang dibatasi pipa dengan daftar kata kunci seperti ini:

var x = ["sai","test","jacob","justin"],
    regex = x.join("|");

db.users.find({
    "profile.firstName": {
        "$regex": regex, 
        "$options": "i"
    } 
}).count;


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dalam pencarian MongoDB dalam array dan urutkan berdasarkan jumlah kecocokan

  2. kueri mongoDB WHERE _id> ambang batas

  3. Konfigurasi autoload tidak memuat kelas MongoDB

  4. Bagaimana menemukan catatan acak di Mongoose

  5. $in membutuhkan array sebagai argumen kedua, ditemukan:hilang