কম্পিউটার টিউটোরিয়াল

MongoDB-এ নির্দিষ্ট FirstName এবং LastName সম্বয় ডকুমেন্ট খোঁজা ($and + $in)

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 } এই কুয়েরি দ্রুত করবে।
  1. MongoDB-এ "Like" কোয়েরি ইমপ্লিমেন্ট করা (Regex ব্যবহার করে)

  2. MongoDB-এ কেস-ইনসেনসিটিভ (Case-Insensitive) নাম দিয়ে ডকুমেন্ট খোঁজা ($regex /^name$/i)

  3. MongoDB-তে $elemMatch ব্যবহার করে অ্যারে ভ্যালু অনুযায়ী ডকুমেন্ট ফিল্টার করা

  4. MongoDB-তে নির্দিষ্ট মান থেকে বড় বা সমান ভ্যালু খোঁজা ($gte)