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

MongoDB-এ স্ট্রাকচার্ড গ্রুপিং কোয়েরি: কাউন্ট সহ নতুন ফিল্ড

MongoDB-এ aggregate() এর মধ্যে $group ব্যবহার করে স্ট্রাকচার্ড গ্রুপিং করা যায়। $group নির্দিষ্ট _id এক্সপ্রেশন দিয়ে ডকুমেন্টগুলো গ্রুপ করে এবং প্রতিটি গ্রুপের জন্য একটি ডকুমেন্ট আউটপুট করে।

ডেটা ইনসার্ট:

> db.demo534.insertOne({_id:10,"ProductId":100,"ProductName":"Product-1"});
{ "acknowledged" : true, "insertedId" : 10 }
> db.demo534.insertOne({_id:11,"ProductId":100,"ProductName":"Product-2"});
{ "acknowledged" : true, "insertedId" : 11 }
> db.demo534.insertOne({_id:12,"ProductId":101,"ProductName":"Product-1"});
{ "acknowledged" : true, "insertedId" : 12 }

সকল ডকুমেন্ট:

> db.demo534.find();

আউটপুট:

{ "_id" : 10, "ProductId" : 100, "ProductName" : "Product-1" }
{ "_id" : 11, "ProductId" : 100, "ProductName" : "Product-2" }
{ "_id" : 12, "ProductId" : 101, "ProductName" : "Product-1" }

স্ট্রাকচার্ড গ্রুপিং কোয়েরি (দুই স্তরে গ্রুপিং):

> db.demo534.aggregate(
... {
...   $group: {
...     _id: { productName: "$ProductName", productId: "$ProductId" },
...     count: { $sum: 1 }
...   }
... },
... {
...   $group: {
...     _id: "$_id.productId",
...     itemCounts: { $push: { productName: "$_id.productName", count: "$count" } }
...   }
... })

আউটপুট:

{ "_id" : 101, "itemCounts" : [ { "productName" : "Product-1", "count" : 1 } ] }
{ "_id" : 101, "itemCounts" : [ { "productName" : "Product-2", "count" : 1 }, { "productName" : "Product-1", "count" : 1 } ] }

ব্যাখ্যা

  • প্রথম $group: ProductName এবং ProductId কাম্বিনেশন দিয়ে গ্রুপ করে কাউন্ট করে।
  • দ্বিতীয় $group: productId দিয়ে আবার গ্রুপ করে এবং $push দিয়ে প্রতিটি প্রোডাক্টের নাম ও কাউন্ট একটি অ্যারে (itemCounts) তে সংগ্রহ করে।
  • ফলাফলে প্রতিটি ProductId-র নিচে তার সব প্রোডাক্ট নাম ও কাউন্ট থাকে।
  1. MongoDB-তে অ্যারে এলিমেন্টের সংখ্যা গুনে নতুন ফিল্ডে দেখানো ($size)

  2. MongoDB-তে জাভাস্ক্রিপ্ট দিয়ে অ্যারে অবজেক্টকে কী-ভ্যালু অবজেক্টে রূপান্তর করা

  3. MongoDB-এ নতুন ফিল্ড যোগ করে প্রাইস বিভাজন এবং কনক্যাটেনেশন

  4. MySQL কোয়েরি: ডISTINCT ভ্যালুর আওতা গণনা করে নতুন কলামে প্রদর্শন করা