MongoDB-এ নেস্টেড সাব-ডকুমেন্টের সংখ্যাসূচক ফিল্ডের যোগফল বের করতে অ্যাগ্রিগেশন পাইপলাইনে $group এবং $sum ব্যবহার করা হয়।
নমুনা ডেটা তৈরি (CustomerDetails.CustomerPurchase.CustomerPurchaseAmount)
> db.summingSubDocumentDemo.insertOne({ "_id": 101, "CustomerDetails": { "CustomerPurchase": { "CustomerPurchaseAmount": 2000 } } });
{ "acknowledged": true, "insertedId": 101 }
> db.summingSubDocumentDemo.insertOne({ "_id": 102, "CustomerDetails": { "CustomerPurchase": { "CustomerPurchaseAmount": 3000 } } });
{ "acknowledged": true, "insertedId": 102 }
> db.summingSubDocumentDemo.insertOne({ "_id": 103, "CustomerDetails": { "CustomerPurchase": { "CustomerPurchaseAmount": 5000 } } });
{ "acknowledged": true, "insertedId": 103 }
সব ডকুমেন্ট দেখুন
> db.summingSubDocumentDemo.find().pretty();আউটপুট:
{
"_id": 101,
"CustomerDetails": { "CustomerPurchase": { "CustomerPurchaseAmount": 2000 } }
}
{
"_id": 102,
"CustomerDetails": { "CustomerPurchase": { "CustomerPurchaseAmount": 3000 } }
}
{
"_id": 103,
"CustomerDetails": { "CustomerPurchase": { "CustomerPurchaseAmount": 5000 } }
}
অ্যাগ্রিগেশন দিয়ে মোট অ্যামাউন্ট বের করা
> db.summingSubDocumentDemo.aggregate([
{$group: {_id: "", totalAmount: {$sum: "$CustomerDetails.CustomerPurchase.CustomerPurchaseAmount"}}},
{$project: {_id: 0, totalAmount: 1}}
]);
আউটপুট:
{ "totalAmount": 10000 }
ব্যাখ্যা:
$group:_id: ""মানে সব ডকুমেন্ট একই গ্রুপে।$sum: ডট নোটেশন দিয়ে নেস্টেড ফিল্ডের পথ দিয়ে যোগফল করা।$project:_id: 0দিয়ে _id লুকিয়ে শুধু totalAmount দেখানো।