MongoDB-এ প্রতিটি ডকুমেন্টের অ্যারে ফিল্ডের আকার (সাইজ/লেংথ) বের করে সব ডকুমেন্টের মোট যোগফল জানতে অ্যাগ্রিগেশনে $size এবং $sum একসাথে ব্যবহার করা হয়।
নমুনা কালেকশন তৈরি
> db.demo231.insertOne({ "Subjects": ["MongoDB", "MySQL", "SQL Server"] });
{ "acknowledged": true, "insertedId": ObjectId("5e3fc73ff4cebbeaebec5143") }
> db.demo231.insertOne({ "Subjects": ["Java", "C", "C++"] });
{ "acknowledged": true, "insertedId": ObjectId("5e3fc757f4cebbeaebec5144") }
> db.demo231.insertOne({ "Subjects": ["Python", "Spring"] });
{ "acknowledged": true, "insertedId": ObjectId("5e3fc762f4cebbeaebec5145") }
ডকুমেন্টগুলো দেখানো
> db.demo231.find();
আউটপুট:
{ "_id": ObjectId("5e3fc73ff4cebbeaebec5143"), "Subjects": [ "MongoDB", "MySQL", "SQL Server" ] }
{ "_id": ObjectId("5e3fc757f4cebbeaebec5144"), "Subjects": [ "Java", "C", "C++" ] }
{ "_id": ObjectId("5e3fc762f4cebbeaebec5145"), "Subjects": [ "Python", "Spring" ] }
অ্যারে সাইজের মোট যোগফল
> db.demo231.aggregate([
{
$group: {
_id: "_id",
ToTalValue: { $sum: { $size: "$Subjects" } }
}
}
]);
ফলাফল
{ "_id": "_id", "ToTalValue": 8 }
ব্যাখ্যা:
$size: "$Subjects"- প্রতিটি ডকুমেন্টেরSubjectsঅ্যারের এলিমেন্ট সংখ্যা বের করে (৩, ৩, ২)।$sum- সেগুলোর যোগফল করে (৩ + ৩ + ২ = ৮)।_id: "_id"- সব ডকুমেন্ট এক গ্রুপে (স্ট্রিং "_id" ব্যবহার করা হয়েছে, null ও দিয়ে যাবে)।
প্রতিটি ডকুমেন্টের অ্যারে সাইজ আলাদা দেখাতে
db.demo231.aggregate([
{ $project: { Subjects: 1, SubjectCount: { $size: "$Subjects" } } }
]);
ফলাফল:
{ "_id": ObjectId("..."), "Subjects": [...], "SubjectCount": 3 }
{ "_id": ObjectId("..."), "Subjects": [...], "SubjectCount": 3 }
{ "_id": ObjectId("..."), "Subjects": [...], "SubjectCount": 2 }
নোট
$size শুধু অ্যাগ্রিগেশন পাইপলাইনে কাজ করে, সাধারণ find() কোয়েরিতে ব্যবহার করা যায় না।