$sum এবং $group ব্যবহার করে নির্দিষ্ট ডকুমেন্টের যোগফল গণনা
MongoDB-এ নির্দিষ্ট শর্তের ডকুমেন্টের যোগফল বের করতে $match, $unwind, $group এবং $sum অপারেটর একসাথে ব্যবহার করা হয়।
নমুনা সংগ্রহ তৈরি
>db.calculateSumOfDocument.insertOne({"ListOfUsers":["Carol","Bob"],"UsersDetails":[{"FirstUser":"Carol","TotalLikes":20},{"FirstUser":"Bob","TotalLikes":45}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e084e9125ddae1f53b6220c") }
>db.calculateSumOfDocument.insertOne({"ListOfUsers":["Carol","Bob"],"UsersDetails":[{"FirstUser":"Carol","TotalLikes":60},{"FirstUser":"Bob","TotalLikes":50}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e084f6125ddae1f53b6220d") }
সব ডকুমেন্ট দেখানো
> db.calculateSumOfDocument.find().pretty();
আউটপুট:
Carol-এর TotalLikes-এর যোগফল বের করার কোয়েরি
> db.calculateSumOfDocument.aggregate([ { "$match": { "UsersDetails.FirstUser": "Carol" } }, { "$unwind" : "$UsersDetails" }, { "$match": { "UsersDetails.FirstUser": "Carol" } }, { "$group": { "_id": null, "total": { "$sum": "$UsersDetails.TotalLikes" } }} ]);ফলাফল:
ব্যাখ্যা: প্রথমে Carol-এর ডকুমেন্ট ফিল্টার করা হয়েছে, তারপর UsersDetails অ্যারে unwind করা হয়েছে, আবার Carol ফিল্টার করে তার TotalLikes (20 + 60 = 80) যোগফল বের করা হয়েছে।