MongoDB-এ একাধিক ফিল্ডে একাধিক মান ম্যাচ করতে $and অপারেটর ব্যবহার করে শর্তগুলো কম্বাইন করা হয়। প্রতিটি ফিল্ডে একাধিক মান ম্যাচের জন্য $in অপারেটর ব্যবহার করা হয়।
উদাহরণ: কালেকশন ও ডেটা তৈরি
> db.demo692.insertOne({ FirstName: "Chris", "LastName": "Brown" });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea585dca7e81adc6a0b396a") }
> db.demo692.insertOne({ FirstName: "John", "LastName": "Brown" });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea585e2a7e81adc6a0b396b") }
> db.demo692.insertOne({ FirstName: "John", "LastName": "Smith" });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea585e7a7e81adc6a0b396c") }
> db.demo692.insertOne({ FirstName: "John", "LastName": "Doe" });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea585efa7e81adc6a0b396d") }
> db.demo692.insertOne({ FirstName: "Adam", "LastName": "Smith" });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea585faa7e81adc6a0b396e") }
সব ডকুমেন্ট দেখানো
> db.demo692.find();
আউটপুট:
{ "_id" : ObjectId("5ea585dca7e81adc6a0b396a"), "FirstName" : "Chris", "LastName" : "Brown" }
{ "_id" : ObjectId("5ea585e2a7e81adc6a0b396b"), "FirstName" : "John", "LastName" : "Brown" }
{ "_id" : ObjectId("5ea585e7a7e81adc6a0b396c"), "FirstName" : "John", "LastName" : "Smith" }
{ "_id" : ObjectId("5ea585efa7e81adc6a0b396d"), "FirstName" : "John", "LastName" : "Doe" }
{ "_id" : ObjectId("5ea585faa7e81adc6a0b396e"), "FirstName" : "Adam", "LastName" : "Smith" }
FirstName (Chris বা John) AND LastName (Brown বা Smith) ম্যাচ
> db.demo692.find({
$and: [
{ FirstName: { $in: ["Chris", "John"] } },
{ LastName: { $in: ["Brown", "Smith"] } }
]
});
কোয়েরির ব্যাখ্যা
$and— দুটি শর্ত একসাথে সত্য হতে হবে (AND লজিক)।FirstName: { $in: ["Chris", "John"] }— FirstName "Chris" বা "John" হবে।LastName: { $in: ["Brown", "Smith"] }— LastName "Brown" বা "Smith" হবে।- কম্বিনেশন: (Chris/Brown), (Chris/Smith), (John/Brown), (John/Smith) — এই ৪টি কম্বিনেশন মэтচ করবে।
আউটপুট
{ "_id" : ObjectId("5ea585dca7e81adc6a0b396a"), "FirstName" : "Chris", "LastName" : "Brown" }
{ "_id" : ObjectId("5ea585e2a7e81adc6a0b396b"), "FirstName" : "John", "LastName" : "Brown" }
{ "_id" : ObjectId("5ea585e7a7e81adc6a0b396c"), "FirstName" : "John", "LastName" : "Smith" }
"John Doe" (LastName Doe) এবং "Adam Smith" (FirstName Adam) ম্যাচ করেনি।
সহজতর সিনট্যাক্স (Implicit AND)
MongoDB-এ টপ-লেভেল ফিল্ডগুলো ইমপ্লিসিটলি AND-এড থাকে, তাই $and লিখতে হয় না:
> db.demo692.find({
FirstName: { $in: ["Chris", "John"] },
LastName: { $in: ["Brown", "Smith"] }
});
এটি একই ফলাফল দেবে। $and লাগে যখন একই ফিল্ডে একাধিক এক্সপ্রেশন বা অপারেটর কম্বাইন করতে হয়।
মূল পয়েন্টসমূহ
$inএকই ফিল্ডে একাধিক মান OR-এ কম্বাইন করে।$andস্পষ্ট AND লজিকের জন্য (যখন একই ফিল্ডে একাধিক অপারেটর লাগে)।- ইমপ্লিসিট AND (কমা-সেপারেটেড ফিল্ড) পড়া সহজ এবং পারফরম্যান্স সমান।
- ইন্ডেক্স: কমপাউন্ড ইন্ডেক্স
{ FirstName: 1, LastName: 1 }এই কুয়েরি দ্রুত করবে।