MongoDB-এ স্ট্রিং ফিল্ডে প্যাটার্ন ম্যাচিং করতে রেগুলার এক্সপ্রেশন (Regex) ব্যবহার করুন। কেস-সেনসিটিভ এবং কেস-ইনসেনসিটিভ দুভাবেই করা যায়।
উদাহরণ
বিভিন্ন কেসের নাম সহ ডকুমেন্ট তৈরি করুন:
> db.workingOfRegularExpressionDemo.insertOne({ "StudentDetails": { "StudentName": "John" }, "StudentAge": 21 });
{ "acknowledged" : true, "insertedId" : ObjectId("5cf227acb64a577be5a2bc07") }
> db.workingOfRegularExpressionDemo.insertOne({ "StudentDetails": { "StudentName": "JOHN" }, "StudentAge": 19 });
{ "acknowledged" : true, "insertedId" : ObjectId("5cf227b8b64a577be5a2bc08") }
> db.workingOfRegularExpressionDemo.insertOne({ "StudentDetails": { "StudentName": "Carol" }, "StudentAge": 20 });
{ "acknowledged" : true, "insertedId" : ObjectId("5cf227c2b64a577be5a2bc09") }
সকল ডকুমেন্ট দেখুন:
> db.workingOfRegularExpressionDemo.find();
আউটপুট:
{ "_id" : ObjectId("5cf227acb64a577be5a2bc07"), "StudentDetails" : { "StudentName" : "John" }, "StudentAge" : 21 }
{ "_id" : ObjectId("5cf227b8b64a577be5a2bc08"), "StudentDetails" : { "StudentName" : "JOHN" }, "StudentAge" : 19 }
{ "_id" : ObjectId("5cf227c2b64a577be5a2bc09"), "StudentDetails" : { "StudentName" : "Carol" }, "StudentAge" : 20 }
কেস-সেনসিটিভ ম্যাচ: "JOHN" (শুধু বড় হাতের)
> db.workingOfRegularExpressionDemo.find({ 'StudentDetails.StudentName': /JOHN/ });
আউটপুট:
{ "_id" : ObjectId("5cf227b8b64a577be5a2bc08"), "StudentDetails" : { "StudentName" : "JOHN" }, "StudentAge" : 19 }
কেস-ইনসেনসিটিভ ম্যাচ: "john", "John", "JOHN", "JoHn" সব
> db.workingOfRegularExpressionDemo.find({ 'StudentDetails.StudentName': /JOHN/i });
আউটপুট:
{ "_id" : ObjectId("5cf227acb64a577be5a2bc07"), "StudentDetails" : { "StudentName" : "John" }, "StudentAge" : 21 }
{ "_id" : ObjectId("5cf227b8b64a577be5a2bc08"), "StudentDetails" : { "StudentName" : "JOHN" }, "StudentAge" : 19 }
{ "_id" : ObjectId("5cf227c2b64a577be5a2bc09"), "StudentDetails" : { "StudentName" : "Carol" }, "StudentAge" : 20 }
ব্যাখ্যা:
/pattern/— জাভাস্ক্রিপ্ট রেগেক্স সিনট্যাক্স।/pattern/i—iফ্ল্যাগ কেস-ইনসেনসিটিভ করে।$regexঅপারেটরও ব্যবহার করা যায়:{$regex: "JOHN", $options: "i"}।
সতর্কতা: রেগেক্স ইনডেক্স ব্যবহার করে না (prefix regex ছাড়া), বড় ডেটাসেটে ধীর হতে পারে।