$regex অপারেটর ব্যবহার
স্ট্রিং ফিল্ডের দৈর্ঘ্য (length) অনুযায়ী ফিল্টার করার জন্য রেগুলার এক্সপ্রেশন ($regex) ব্যবহার করা হয়।
সিনট্যাক্স
db.yourCollectionName.find({
'yourFieldName': { $regex: /^.{minLength,maxLength}$/ }
});
উদাহরণ: ডকুমেন্ট তৈরি
> db.queryLengthDemo.insertOne({"StudentFullName":"John Smith"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a01ae353decbc2fc927c0") }
> db.queryLengthDemo.insertOne({"StudentFullName":"John Doe"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a01b4353decbc2fc927c1") }
> db.queryLengthDemo.insertOne({"StudentFullName":"David Miller"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a01c2353decbc2fc927c2") }
> db.queryLengthDemo.insertOne({"StudentFullName":"Robert Taylor"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a01e2353decbc2fc927c3") }
> db.queryLengthDemo.insertOne({"StudentFullName":"Chris Williams"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a01f1353decbc2fc927c4") }
কুয়েরি: লেন্থ ৯ থেকে ১২ এর মাঝপথ (স্পেস সহ)
> db.queryLengthDemo.find({
StudentFullName: { $regex: /^.{9,12}$/ }
}).pretty();
আউটপুট:
{ "StudentFullName" : "John Smith" } // 10 chars
{ "StudentFullName" : "David Miller" } // 12 chars
Regex ব্যাখ্যা
^- স্ট্রিং শুরু.{9,12}- যেকোনো ক্যারেক্টার ৯ থেকে ১২ বার$- স্ট্রিং শেষ
সতর্কতা: রেগেক্স কুয়েরি ইনডেক্স ব্যবহার করতে পারে না (কেস-ইনসেনসিটিভ বা এনকর ছাড়া)। বড় কালেকশনে পারফরম্যান্স খারাপ হতে পারে।