মঙ্গোডিবি হলো বর্তমান সময়ের একটি লিডিং NoSQL ডেটাবেস যা আমাদের কে খুব সহজেই পরিবর্তনশীল এবং শক্তিশালী কুয়েরি করার সুবিধা দিয়ে থাকে। ডেটাবেজ ম্যানেজ করা বেশ জটিল একটি কাজ হলেও, মঙ্গোডিবি আপনাকে বেশ কিছু সুবিধাজনক অপারেটর দিয়ে থাকে যা দিয়ে আপনি খুব সহজেই আপনার ডেটার মধ্যে কুয়েরি চালাতে পারবেন। এ ধরনের অপারেটরের মধ্যে রয়েছে $not এবং $nor অপারেটর, যা আপনাকে যথাক্রমে কুয়েরির কন্ডিশনগুলোকে falsy করে দিতে পারে এবং লজিকাল NOR অপারেশন চালাতে সাহায্য করে। এই ব্লগে আমরা জানবো কিভাবে এই দুটি অপারেটর মঙ্গোডিবির কুয়েরি মেকানিজম কে আরও বেটার ভাবে অপারেট করতে সাহায্য করে।
$not অপারেটরটি মঙ্গোডিবিতে একটি স্পেসিফিক শর্তকে falsy বা বিপরীত শর্তে পাল্টে দেওয়ার জন্য ব্যবহৃত হয়। এটি প্রায়শই অন্য কুয়েরি অপারেটরগুলির সঙ্গে সংযোগ করে ব্যবহৃত হয় যাতে নির্দিষ্ট শর্তটির উল্টো অর্থাৎ falsy বা বিপরীত শর্তটি পাওয়া যায়। $not অপারেটরটি একটি সিঙ্গেল কুয়েরি কন্ডিশন রিসিভ করে এবং সেই কন্ডিশনটিকে যে ডেটা গুলো পূরণ করতে পারেনা, সেই ডেটা গুলো কে ফলাফল হিসেবে দেয়।
Syntax: $not অপারেটরটি নিচের সিনট্যাক্সে ব্যবহার করা যায়:
{ field: { $not: { <query condition>} } }
Example: ধরা যাক, আমাদের ডেটাবেজে একটি বইয়ের কালেকশন আছে এবং আমরা সেখান থেকে সবগুলি বই খুঁজতে চাই যা J.K. Rowling দ্বারা লেখা নয়। আমরা $not অপারেটর ব্যবহার করে এটি সম্ভব করতে পারি নিচের মত করে:
db.books.find({ author: { $not: { $eq: "J.K. Rowling" } } })
এই কুয়েরি সমস্ত বইগুলি রিটার্ন করবে যা লেকখ "J.K. Rowling" এর লেখা নয়।
$not Operator আপনাকে একটি সিঙ্গেল কন্ডিশনের উপর ডেটাবেজে অপারেশন চালাতে দেয়। কিন্তু $nor অপারেটর আপনাকে একাধিক কন্ডিশনের একটি Array দিয়ে ডেটাবেজে অপারেশন চালানোর সুবিধা দেয়। অর্থাৎ একাধিক কন্ডিশনের একটি Array তে থাকা কন্ডিশনগুলো কে falsy বা বিপরীত শর্তে পাল্টে দেয় এবং যে ডকুমেন্ট গুলো এই কন্ডিশন ম্যাচ করবেনা সেগুলো কে ফলাফল হিসেবে দেখাবে।
Syntax: $nor অপারেটরটি নিচের সিনট্যাক্সে ব্যবহার করা যায়:
{ $nor: [ { <query condition 1> }, { <query condition 2> }, ... ] }
Example: চলুন মনে করি আমাদের একটি পণ্যের কালেকশন আছে এবং আমরা যেসব পণ্যগুলি "ইলেকট্রনিক্স" ক্যাটেগরির অন্তর্ভুক্ত নয় এবং যাদের মূল্য $500 এর বেশি নয় সেগুলোকে কুয়েরি চালিয়ে বের করতে চাই। আমরা $nor অপারেটর ব্যবহার করে এই কাজটি করতে পারি
db.products.find({
$nor: [
{ category: "electronics" },
{ price: { $gt: 500 } }
]
})
এই কুয়েরি সমস্ত পণ্যগুলি ফলাফল হিসাবে প্রদর্শন করবে যা electronics ক্যাটেগরির অন্তর্ভুক্ত নয় এবং তাদের মূল্য $500 এর বেশি নয়। উপরে উল্লেখিত উদাহরণগুলি মঙ্গোডিবির $not এবং $nor অপারেটরগুলি ব্যবহার করে খুব সহজেই কুয়েরি চালানোর সুবিধা দেয়। এই অপারেটরগুলি আপনার দেওয়া শর্তগুলি falsy করার সুবিধা দেয় এবং লজিকাল অপারেশন পালন করার জন্য মঙ্গোডিবির কোয়েরি সিস্টেম কে আর বেটার করে তোলে। আপনি এই অপারেটরগুলি ব্যবহার করে আপনার প্রয়োজনে সহজেই পরিবর্তনশীল কুয়েরি তৈরি করতে পারেন ।