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;