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

MongoDB-এ অ্যারে-র নির্দিষ্ট এলিমেন্ট ফিল্টার করে রেঞ্জ কোয়েরি করা ($filter, $match)


MongoDB এগ্রিগেশনে $match এবং $filter দিয়ে অ্যারে-র নির্দিষ্ট রেঞ্জের এলিমেন্ট বের করা

MongoDB-এ একটি ডকুমেন্টের অ্যারে ফিল্ড থেকে নির্দিষ্ট রেঞ্জ (Range)য় পড়া এলিমেন্টগুলো মাত্র বের করতে এগ্রিগেশন পাইপলাইনে $match (ডকুমেন্ট ফিল্টার) এবং $addFields + $filter (অ্যারে ফিল্টার) কম্বাইন করে ব্যবহার করা হয়।

১. কালেকশন ও প্রোডাক্ট ডেটা তৈরি

> db.demo351.insertOne({
  "_id": "101",
  "ProductDetails": [
    { "ProductName": "Product-1", "ProductPrice": 500 },
    { "ProductName": "Product-2", "ProductPrice": 400 }
  ]
});
{ "acknowledged" : true, "insertedId" : "101" }
> db.demo351.insertOne({
  "_id": "102",
  "ProductDetails": [
    { "ProductName": "Product-3", "ProductPrice": 200 },
    { "ProductName": "Product-4", "ProductPrice": 800 }
  ]
});
{ "acknowledged" : true, "insertedId" : "102" }

২. সব ডকুমেন্ট দেখানো

> db.demo351.find();

আউটপুট:

{ "_id" : "101", "ProductDetails" : [ { "ProductName" : "Product-1", "ProductPrice" : 500 }, { "ProductName" : "Product-2", "ProductPrice" : 400 } ] }
{ "_id" : "102", "ProductDetails" : [ { "ProductName" : "Product-3", "ProductPrice" : 200 }, { "ProductName" : "Product-4", "ProductPrice" : 800 } ] }

৩. এগ্রিগেশন কোয়েরি: _id "102" এবং Price 600-900 এর মধ্যে

> db.demo351.aggregate([
  { $match: { _id: "102" } },
  { $addFields: {
      ProductDetails: { $filter: {
        input: "$ProductDetails",
        cond: { $and: [
          { $gt: ["$$this.ProductPrice", 600] },
          { $lt: ["$$this.ProductPrice", 900] }
        ]}
      }}
  }}
])

স্টেজ ব্যাখ্যা:

  • $match - প্রথমে _id "102" ডকুমেন্টটি সিলেক্ট করে।
  • $addFields - ProductDetails ফিল্ডকে নতুন ফিল্টার করা ভার্শন দিয়ে ওভাররাইট করে।
  • $filter - অ্যারে-র প্রতিটি এলিমেন্ট ($$this) চেক করে 600 < Price < 900 শর্ত পূরণ করলে রাখে।

৪. ফলাফল

{ "_id" : "102", "ProductDetails" : [ { "ProductName" : "Product-4", "ProductPrice" : 800 } ] }

Product-3 (Price 200) বাদ পড়েছে, শুধু Product-4 (Price 800) বাকি থাকেছে। মূল ডকুমেন্ট ডাটাবেসে অপরিবর্তিত।


  1. MongoDB-এ অ্যারে এলিমেন্টস সহ নির্দিষ্ট ডকুমেন্ট ফেচ করা

  2. MongoDB-এ নির্দিষ্ট অ্যারে এলিমেন্ট সমाहিত ডকুমেন্ট খোঁজা ($all অপারেটর)

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

  4. MongoDB-এ এমবেডেড ডকুমেন্টের অ্যারে ফিল্টার করা (৩ লেভেল)