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

MongoDB-এ অ্যারে আইটেম গ্রুপ করে একই প্রাইসের প্রোডাক্ট কাউন্ট করা

MongoDB-এ একটি ডকুমেন্টের ভেতরের অ্যারে (যেমন ProductInformation) এর আইটেমগুলো গ্রুপ করে নির্দিষ্ট ফিল্ড (যেমন ProductPrice) অনুযায়ী কাউন্ট করতে $unwind, $group, এবং $sort স্টেজ ব্যবহার করা হয়।

উদাহরণ: কালেকশন ও ডেটা তৈরি

> db.demo566.insertOne({
    "ProductInformation": [
      { "ProductName": "Product-1", "ProductPrice": 100 },
      { "ProductName": "Product-2", "ProductPrice": 1100 },
      { "ProductName": "Product-3", "ProductPrice": 100 },
      { "ProductName": "Product-4", "ProductPrice": 1100 },
      { "ProductName": "Product-5", "ProductPrice": 100 }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e908e2339cfeaaf0b97b57a") }

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

> db.demo566.find();

আউটপুট:

{ "_id" : ObjectId("5e908e2339cfeaaf0b97b57a"), "ProductInformation" : [
    { "ProductName" : "Product-1", "ProductPrice" : 100 },
    { "ProductName" : "Product-2", "ProductPrice" : 1100 },
    { "ProductName" : "Product-3", "ProductPrice" : 100 },
    { "ProductName" : "Product-4", "ProductPrice" : 1100 },
    { "ProductName" : "Product-5", "ProductPrice" : 100 }
] }

Aggregation কোয়েরি: প্রাইস অনুযায়ী গ্রুপ করে কাউন্ট

> db.demo566.aggregate([
    { $unwind: "$ProductInformation" },
    { $group: {
        _id: "$ProductInformation.ProductPrice",
        Value: { $sum: 1 }
    }},
    { $sort: { "_id": 1 } }
])

কোয়েরির ব্যাখ্যা

  1. $unwind: "$ProductInformation" — অ্যারেতে থাকা প্রতিটি প্রোডাক্ট অবজেক্টকে আলাদা ডকুমেন্ট হিসেবে ফ্ল্যাটেন করে।
  2. $group — ProductPrice অনুযায়ী গ্রুপ করে (_id: "$ProductInformation.ProductPrice") এবং $sum: 1 দিয়ে প্রতিটি গ্রুপের কাউন্ট (Value) বের করে।
  3. $sort: { "_id": 1 } — প্রাইস অনুযায়ী অ্যাসেন্ডিং অর্ডারে সর্ট করে।

আউটপুট

{ "_id" : 100, "Value" : 3 }
{ "_id" : 1100, "Value" : 2 }

প্রাইস ১০০য় ৩টি প্রোডাক্ট, ১১০০য় ২টি প্রোডাক্ট।

মূল পয়েন্টসমূহ

  • $unwind অ্যারে ডিকনস্ট্রাক্ট করার জন্য আবশ্যক।
  • $group এ _id হিসেবে গ্রুপিং ফিল্ড নির্দিষ্ট করুন।
  • $sum: 1 হলো কাউন্ট করার সাধারণ প্যাটার্ন।
  • বড় অ্যারে বা বড় ডেটাসেটে $unwind পারফরম্যান্স কমাতে পারে; إندেক্স বা প্রি-অ্যাগ্রিগেশন বিবেচনা করুন।
  1. MongoDB-এ $unwind ব্যবহার করে কাউন্ট বের করা

  2. MongoDB-এ দুটি তারিখের মাঝপথে ও নির্দিষ্ট ফিল্ড মান দিয়ে ডেটা গ্রুপ করে সম ও কাউন্ট বের করা

  3. MongoDB-তে ন্যাচারেল অর্ডার দিয়ে সর্ট করা এবং আইটেমগুলো রিভার্স করা

  4. MongoDB-তে অ্যারে এলিমেন্টের সংখ্যা গুনে নতুন ফিল্ডে দেখানো ($size)