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

MongoDB-তে অ্যারে ভ্যালুর ভিত্তিতে অ্যাগ্রিগেট করে ভিন্ন ডকুমেন্টের মান যোগফল বের করা


এজন্য MongoDB-তে aggregate() ব্যবহার করুন। প্রথমে ডকুমেন্টসহ একটি কলেকশন তৈরি করি:

> db.demo126.insertOne(
    {
        "StudentDetails" : {
            "Number" : 1,
            "OtherDetails" : [
                { "Name" : "Chris", "Score" : 55 }
            ]
        }
    }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e304b3068e7f832db1a7f56") }
> db.demo126.insertOne(
    {
        "StudentDetails" : {
            "Number" : 2,
            "OtherDetails" : [
                { "Name" : "Chris", "Score" : 35 },
                { "Name" : "David", "Score" : 87 }
            ]
        }
    }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e304b3068e7f832db1a7f57") }

find() মেথড দিয়ে সব ডকুমেন্ট দেখান:

> db.demo126.find();

আউটপুট:

{ "_id" : ObjectId("5e304b3068e7f832db1a7f56"), "StudentDetails" : { "Number" : 1, "OtherDetails" : [ { "Name" : "Chris", "Score" : 55 } ] } }
{ "_id" : ObjectId("5e304b3068e7f832db1a7f57"), "StudentDetails" : { "Number" : 2, "OtherDetails" : [ { "Name" : "Chris", "Score" : 35 }, { "Name" : "David", "Score" : 87 } ] } }

অ্যারে ভ্যালুর ভিত্তিতে অ্যাগ্রিগেট করার কোয়েরি:

> db.demo126.aggregate([
    { $unwind: "$StudentDetails.OtherDetails" },
    {
        $group: {
            _id: "$StudentDetails.OtherDetails.Name",
            quantity: { $sum: "$StudentDetails.OtherDetails.Score" }
        }
    }
])

ফলাফল (নাম অনুযায়ী টোটাল স্কোর):

{ "_id" : "David", "quantity" : 87 }
{ "_id" : "Chris", "quantity" : 90 }

  1. MongoDB-তে $elemMatch ব্যবহার করে অ্যারে ভ্যালু অনুযায়ী ডকুমেন্ট ফিল্টার করা

  2. MongoDB-তে অ্যারের ভ্যালু অনুযায়ী কালেকশন সর্ট করা (aggregate + $unwind + $sort)

  3. MongoDB-এ অ্যারের ডকুমেন্ট কাউন্ট করা নির্দিষ্ট ফিল্ডের মান অনুযায়ী

  4. MongoDB ডকুমেন্ট থেকে নাল ভ্যালু বাদ দেওয়া