ভূমিকা
MongoDB-এ রেগুলার এক্সপ্রেশন (Regex) এবং $not অপারেটর ব্যবহার করে নির্দিষ্ট ক্যারেক্টার (যেমন #) ধারণকারী স্ট্রিং বাদ দিয়ে কোয়েরি করা যায়।
নমুনা ডেটা তৈরি
regexDemo কালেকশনে চারটি ডকুমেন্ট ইনসার্ট করা হয়েছে, যেকোনো দুটি CustomerId ফিল্ডে # ক্যারেক্টার রয়েছে।
সকল ডকুমেন্ট প্রদর্শন
{ "_id" : ObjectId("5cc7428f8f9e6ff3eb0ce436"), "CustomerId" : "Customer#1234", "CustomerName" : "Chris" } { "_id" : ObjectId("5cc7429e8f9e6ff3eb0ce437"), "CustomerId" : "Customer5678", "CustomerName" : "Robert" } { "_id" : ObjectId("5cc742ae8f9e6ff3eb0ce438"), "CustomerId" : "Customer#777", "CustomerName" : "Carol" } { "_id" : ObjectId("5cc742bc8f9e6ff3eb0ce439"), "CustomerId" : "Customer777", "CustomerName" : "David" }কেস ১: ক্যারেট (^) এবং ডলার ($) অ্যাঙ্কর দিয়ে # বাদ দেওয়া
/^[^#]*$/রেগেক্স মানে: স্ট্রিংয়ের শুরু (^) থেকে শেষ ($) পর্যন্ত # ছাড়া যেকোনো ক্যারেক্টার ([^#]*) থাকবে।{ "_id" : ObjectId("5cc7429e8f9e6ff3eb0ce437"), "CustomerId" : "Customer5678", "CustomerName" : "Robert" } { "_id" : ObjectId("5cc742bc8f9e6ff3eb0ce439"), "CustomerId" : "Customer777", "CustomerName" : "David" }কেস ২: $not অপারেটর দিয়ে # বাদ দেওয়া
$not: /#/মানে: যেসব ডকুমেন্টে # ক্যারেক্টার আছে না।{ "_id" : ObjectId("5cc7429e8f9e6ff3eb0ce437"), "CustomerId" : "Customer5678", "CustomerName" : "Robert" } { "_id" : ObjectId("5cc742bc8f9e6ff3eb0ce439"), "CustomerId" : "Customer777", "CustomerName" : "David" }তুলনা: দুটি পদ্ধতিই একই ফলাফল দেয়। প্রথমটি ক্যারেক্টার ক্লাস ব্যবহার করে, দ্বিতীয়টি নেগেটিভ লুকআহেডের সমতুল্য। পারফরম্যান্স প্রায় সমান।