Menggunakan $in
bisa cukup efisien dengan array kecil tetapi tidak begitu baik dengan daftar besar karena akan melompati 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:
Uji dokumen:
db.papertest.insert([
{ category: "ad bd cd" },
{ category: "dd ed fd" },
{ category: "gd hd id" },
{ category: "jd kd ld" },
{ category: "md nd od" },
{ category: "pd qd rd" },
{ category: "sd td ud" },
{ category: "vd wd xd yd zd" },
]);
Keajaiban:
var keywords = ["xd", "sd", "ad"],
regex = keywords.join("|");
db.papertest.find({
"category": {
"$regex": regex,
"$options": "i"
}
});
Hasilnya
{ "_id" : ObjectId("56bb6f171bb4f693057c0ba4"), "category" : "ad bd cd" }
{ "_id" : ObjectId("56bb6f171bb4f693057c0baa"), "category" : "sd td ud" }
{ "_id" : ObjectId("56bb6f171bb4f693057c0bab"), "category" : "vd wd xd yd zd" }