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

MongoDB-এ নেস্টেড ডকুমেন্ট অ্যাগ্রিগেট করা

MongoDB-এ গভীর নেস্টেড ডকুমেন্ট এবং অ্যারে স্ট্রাকচার থেকে ডেটা এক্সট্রাক্ট এবং অ্যাগ্রিগেট করতে একাধিক $unwind স্টেজ ব্যবহার করে স্ট্রাকচার ফ্ল্যাটেন করা হয়, তারপর $group বা অন্যান্য অপারেটর প্রয়োগ করা হয়।

নমুনা কালেকশন তৈরি (জটিল নেস্টেড স্ট্রাকচার)

> db.aggregateDemo.insertOne({
  "ProductInformation": [
    { "Product1": [ { "Amount": 50 }, { "Amount": 90 }, { "Amount": 30 } ] },
    { "Product1": [ { "Amount": 200 }, { "Amount": 30 }, { "Amount": 40 } ] },
    { "Product1": [ { "Amount": 150 }, { "Amount": 190 }, { "Amount": 198 } ] }
  ]
});
{ "acknowledged": true, "insertedId": ObjectId("5e04df58150ee0e76c06a04d") }

> db.aggregateDemo.insertOne({
  "ProductInformation": [
    { "Product1": [ { "Amount": 100 }, { "Amount": 1002 }, { "Amount": 78 } ] },
    { "Product1": [ { "Amount": 75 }, { "Amount": 400 }, { "Amount": 600 } ] },
    { "Product1": [ { "Amount": 700 }, { "Amount": 500 }, { "Amount": 600 } ] }
  ]
});
{ "acknowledged": true, "insertedId": ObjectId("5e04df93150ee0e76c06a04e") }

ডকুমেন্টগুলো দেখানো

> db.aggregateDemo.find().pretty();

প্রতিটি ডকুমেন্টে ProductInformation অ্যারে আছে, তার ভেতর প্রতিটি এলিমেন্টে Product1 অ্যারে, এবং তার ভেতর Amount ফিল্ড।

নেস্টেড ডকুমেন্ট অ্যাগ্রিগেট (সর্বোচ্চ Amount বের করা)

> db.aggregateDemo.aggregate([
  { $unwind: "$ProductInformation" },
  { $unwind: "$ProductInformation.Product1" },
  { 
    $group: { 
      _id: null, 
      MaximumAmount: { $max: "$ProductInformation.Product1.Amount" } 
    } 
  }
]);

ফলাফল

{ "_id": null, "MaximumAmount": 1002 }

ব্যাখ্যা:

  • ১ম $unwind: ProductInformation অ্যারে ফ্ল্যাটেন করে - প্রতিটি সাব-ডকুমেন্ট আলাদা ডকুমেন্টে রূপান্তর।
  • ২য় $unwind: ProductInformation.Product1 অ্যারে ফ্ল্যাটেন করে - প্রতিটি Amount অবজেক্ট আলাদা ডকুমেন্টে।
  • $group: সব ডকুমেন্ট একসাথে গ্রুপ করে (_id: null) $max দিয়ে সর্বোচ্চ Amount বের করে।
  • সর্বোচ্চ Amount হলো ১০০২ (দ্বিতীয় ডকুমেন্টের প্রথম Product1-এ)।

অন্যান্য অ্যাগ্রিগেশন উদাহরণ

  • সর্বোচ্চ: $max
  • সর্বনিম্ন: $min
  • গড়: $avg
  • যোগফল: $sum
  • গণনা: $sum: 1
  1. MongoDB-এ ডকুমেন্ট আপডেট করার পদ্ধতি

  2. MongoDB-তে aggregate() এবং $group ব্যবহার করে ফিল্ড কাউন্ট অনুযায়ী গ্রুপিং

  3. MongoDB-তে নেস্টেড এম্বেডেড ডকুমেন্ট আপডেট করা

  4. MongoDB-এ নেস্টেড ডকুমেন্ট থেকে শুধু কী (keys) বের করা