MongoDB-এ একই ফিল্ডে একাধিক OR শর্ত প্রয়োগ করতে $or অপারেটর একটিবার ব্যবহার করে একাধিক শর্ত সাঙ্ঘাতিক (array) হিসেবে দেওয়া হয়।
উদাহরণ: কালেকশন ও ডেটা তৈরি
> db.demo551.insertOne({"Name":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e36d39e5f92834d7f05e5") }
> db.demo551.insertOne({"Name":"Chris Brown"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e36d89e5f92834d7f05e6") }
> db.demo551.insertOne({"Name":"John Doe"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e36de9e5f92834d7f05e7") }
> db.demo551.insertOne({"Name":"John Smith"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e36e59e5f92834d7f05e8") }
> db.demo551.insertOne({"Name":"Carol"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e36ec9e5f92834d7f05e9") }
সব ডকুমেন্ট দেখানো
> db.demo551.find();
আউটপুট:
{ "_id" : ObjectId("5e8e36d39e5f92834d7f05e5"), "Name" : "John" }
{ "_id" : ObjectId("5e8e36d89e5f92834d7f05e6"), "Name" : "Chris Brown" }
{ "_id" : ObjectId("5e8e36de9e5f92834d7f05e7"), "Name" : "John Doe" }
{ "_id" : ObjectId("5e8e36e59e5f92834d7f05e8"), "Name" : "John Smith" }
{ "_id" : ObjectId("5e8e36ec9e5f92834d7f05e9"), "Name" : "Carol" }
OR শর্ত ব্যবহার করে "Carol" বা "John" খোঁজা
> db.demo551.find({
$or: [
{ "Name": { $eq: "Carol" } },
{ "Name": { $eq: "John" } }
]
});
কোয়েরির ব্যাখ্যা
$orঅপারেটর একটি অ্যারে নেয় যেখানে প্রতিটি এলিমেন্ট একটি স্বতন্ত্র কুয়েরি শর্ত।$eqস্পষ্ট সমতা (equality) চেক করে।{ Name: "John" }লিখলেও হয়, কিন্তু$eqস্পষ্টতা বাড়ায়।- এই কোয়েরি "Carol" বা "John" (এক্সাক্ট ম্যাচ) 이름이 থাকা ডকুমেন্ট বের করবে। "John Doe" বা "John Smith" ম্যাচ করবে না কারণ তারা "John" এক্সাক্টলি নয়।
আউটপুট
{ "_id" : ObjectId("5e8e36d39e5f92834d7f05e5"), "Name" : "John" }
{ "_id" : ObjectId("5e8e36ec9e5f92834d7f05e9"), "Name" : "Carol" }
অতিরিক্ত টিপস: একই ফিল্ডে একাধিক মান ম্যাচের জন্য $in ব্যবহার করুন
যদি শুধু একই ফিল্ডে একাধিক নির্দিষ্ট মান যেকোনো একটি ম্যাচ করতে হয়, তবে $in আরও সংক্ষিপ্ত ও দ্রুত:
> db.demo551.find({ Name: { $in: ["Carol", "John"] } });
এটি একই ফলাফল দেবে কিন্তু পড়া ও লিখা সহজ। $or ব্যবহার করুন যখন শর্তগুলো ভিন্ন ফিল্ডে বা জটিল এক্সপ্রেশন হয়।
মূল পয়েন্টসমূহ
$orএকাধিক স্বতন্ত্র শর্ত যৌথ করতে ব্যবহৃত হয়।- একই ফিল্ডে সিম্পল মান ম্যাচের জন্য
$inপ্রিয়। $or-এর প্রতিটি শর্ত আলাদা ইন্ডেক্স ব্যবহার করতে পারে (MongoDB 2.6+), তাই পারফরম্যান্স ভালো থাকে।