প্রোডাক্ট নাম অনুযায়ী গ্রুপ করে স্টক কাউন্ট
MongoDB-এ একই প্রোডাক্ট নামের একাধিক এন্ট্রি থাকলে সেগুলো গ্রুপ করে মোট কোয়ান্টিটি, অ্যামাউন্ট এবং ইউনিক প্রোডাক্ট আইডি সংখ্যা বের করতে নেস্টেড $group ব্যবহার করা হয়।
নমুনা ডেটা তৈরি
> db.demo466.insertOne({ "ProductPrice": 150, "ProductQuantity": 1, "ProductName": "Product-1", "ActualAmount": 110, "ProductProfit": 40, "ProductId": 1 })
> db.demo466.insertOne({ "ProductPrice": 150, "ProductQuantity": 1, "ProductName": "Product-1", "ActualAmount": 110, "ProductProfit": 40, "ProductId": 2 })
> db.demo466.insertOne({ "ProductPrice": 170, "ProductQuantity": 2, "ProductName": "Product-2", "ActualAmount": 130, "ProductProfit": 50, "ProductId": 3 })
সমস্ত ডকুমেন্ট দেখানো
> db.demo466.find()
আউটপুট:
{ "_id": ObjectId("..."), "ProductPrice": 150, "ProductQuantity": 1, "ProductName": "Product-1", "ActualAmount": 110, "ProductProfit": 40, "ProductId": 1 }
{ "_id": ObjectId("..."), "ProductPrice": 150, "ProductQuantity": 1, "ProductName": "Product-1", "ActualAmount": 110, "ProductProfit": 40, "ProductId": 2 }
{ "_id": ObjectId("..."), "ProductPrice": 170, "ProductQuantity": 2, "ProductName": "Product-2", "ActualAmount": 130, "ProductProfit": 50, "ProductId": 3 }
নেস্টেড গ্রুপ কোয়েরি
> db.demo466.aggregate([
{ $group: {
_id: { ProductName: "$ProductName" },
ActualAmount: { $sum: "$ActualAmount" },
ProductQuantity: { $sum: "$ProductQuantity" },
ProductId: { $addToSet: "$ProductId" }
}},
{ $project: {
ProductQuantity: true,
ActualAmount: true,
NumberOfProductInStock: { $size: "$ProductId" }
}}
])
ফলাফল:
{ "_id": { "ProductName": "Product-2" }, "ActualAmount": 130, "ProductQuantity": 2, "NumberOfProductInStock": 1 }
{ "_id": { "ProductName": "Product-1" }, "ActualAmount": 220, "ProductQuantity": 2, "NumberOfProductInStock": 2 }
ব্যাখ্যা
- প্রথম $group:
ProductNameঅনুযায়ী গ্রুপ করে:$sum: "$ActualAmount": মোট অ্যাকচুয়াল অ্যামাউন্ট$sum: "$ProductQuantity": মোট কোয়ান্টিটি$addToSet: "$ProductId": ইউনিক প্রোডাক্ট আইডি সংগ্রহ (ডুপ্লিকেট বাদ)
- $project: আউটপুট ফরম্যাট করে:
$size: "$ProductId": ইউনিক প্রোডাক্ট আইডির সংখ্যা (স্টকে কত ধরনের প্রোডাক্ট আছে)
Product-1 দুবার আছে (ProductId 1 এবং 2), তাই NumberOfProductInStock = 2।