এই আর্টিকেলে আমরা মঙ্গোডিবির খুব শক্তিশালী একটা অপারেটর নিয়ে কথা বলব, সেটা হচ্ছে $and অপারেটর। “and" মানে “এবং" , তাই নাম শুনেই বুঝা যাচ্ছে এটার কাজ হবে কোন কিছু জোড়া লাগানো। এটা দারুন কাজের একটা অপারেটর কারণ এই অপারেটর দিয়ে আমরা একাধিক অপারেটর কানেক্ট করে একসাথে কাজে লাগাতে পারি, যার মাধ্যমে আমাদের কুয়েরি গুলো আরো এফিসিয়েন্ট হয়ে ওঠে। এখন কথা হচ্ছে এই এন্ড অপারেটরের ২ টা রুপ আছে। Implicit আর Explicit। আমরা জানি প্রোগ্রামিং এর ভাষায় তখনই কোন কিছুকে implicit বলা হয় যখন জিনিসটা আপনা আপনি ঘটে, আমাদের কষ্ট করে কিছু বলে দেওয়া লাগেনা। আবার অন্য দিকে আমারা যখন নিজে থেকে কোন কিছু সেট করে দেই বা ডিফাইন করে দেই তখন সেটাকে বলে Explicit কোন ঘটনা। এখানও তাই ঘটছে, আমরা যখন কোন কিছু উল্লেখ না করে একাধিক ফিল্ড একসাথে জুড়ে দিবো তখন মঙ্গোডিবি নিজে থেকেই সেটাকে $and হিসেবে বিবেচনা করবে। আমাদের নিজে থেকে কিছু বলে দিতে হবেনা, আর এটাই হচ্ছে implicit $and। আবার দেখা যাচ্ছে আমাদের কোন প্রয়োজনে একাধিক অপারেটর ব্যাবহার করার প্রয়োজন পড়ছে, তখন আমরা নিজে থেকে $and লিখে মঙ্গোডিবিকে বলে দিবো যে, "দেখ, আমার এই এই কাজ গুলো একসাথে করে দিতে হবে কিন্তু"। সেটা কিভাবে করে তা আমারা একটু পরে দেখব, তবে তার আগে আমরা implicit and এর একটা উদাহরণ দেখে ফেলি কারণ এটা একদম পুচকা একটা জিনিস। মনে করেন আমাদের কিছু বই এর ডাট আছে, সেখান থেকে আমারা John Smith এর লিখা Fiction গুলো পেতে চাচ্ছি, সেক্ষেত্রে আমরা নিচের মতো একটা কুয়েরি লিখতে পারি।
db.books.find({
{ category: "Fiction", author: "John Smith" }
});
এখানে দেখা যাচ্ছে আমরা find এর মধ্যে একাধিক ফিল্ড ব্যাবহার করেছি। এই ক্ষেত্রে implicit and ঘটবে, মঙ্গোডিবি আমাদেরকে শুধুমাত্র সেই ডাটা গুলোই ফেরত দিবে যেগুলোর মধ্যে category হলো Fiction "এবং" author হলো John Smith। আমাদের আলাদা ভাবে and উল্লেখ করে দিতে হবেনা। এখন কথা হচ্ছে যদি আমরা এমন কিছু চাই যে, Fiction পড়ব তবে সেটা John Smith অথবা Jane Doe এর হতে হবে। এই যে অথবা মানেই $or, এই ক্ষেত্রে যেহেতু আমার $and এর সাথে আলাদা একটা অপারেটর এড করতে হবে সে ক্ষেত্রে আমার Explicitly $and বলে দিতে হবে।নিচের কোড লক্ষ্য করি -
db.books.find({
$and: [
{ category: "Fiction" },
{ $or: [
{ author: "John Smith" },
{ author: "Jane Doe" }
]}
]
});
এখানে $and অপারেটর লেখা হয়েছে এবং তার মধ্যে $or ব্যাবহার করা হয়েছে, এর মাধ্যমে মনগোডিবি বুঝবে যে “ আমার Fiction খুজে আনতে হবে যার লেখক হবেন John Smith অথবা Jane Doe ” এটাই হচ্ছে মঙ্গোডিবি এর $and অপারেটর এবং Implicit $and আর Explicit $and এর মধ্যে পার্থক্য।