$in
का उपयोग करना छोटे सरणियों के साथ काफी कुशल हो सकता है लेकिन विशाल सूचियों के साथ इतना अच्छा नहीं है क्योंकि यह मिलान करने वाले दस्तावेज़ों को खोजने के लिए इंडेक्स में इधर-उधर हो जाएगा, या अगर कोई इंडेक्स उपयोग करने के लिए नहीं है तो पूरे संग्रह के माध्यम से चल सकता है।
रेगुलर एक्सप्रेशन के साथ $in का उपयोग करने के अलावा, आप इस तरह की कीवर्ड सूची के साथ पाइप-सीमांकित रेगेक्स पैटर्न का उपयोग कर सकते हैं:
दस्तावेज़ों का परीक्षण करें:
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" },
]);
जादू:
var keywords = ["xd", "sd", "ad"],
regex = keywords.join("|");
db.papertest.find({
"category": {
"$regex": regex,
"$options": "i"
}
});
परिणाम
{ "_id" : ObjectId("56bb6f171bb4f693057c0ba4"), "category" : "ad bd cd" }
{ "_id" : ObjectId("56bb6f171bb4f693057c0baa"), "category" : "sd td ud" }
{ "_id" : ObjectId("56bb6f171bb4f693057c0bab"), "category" : "vd wd xd yd zd" }