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

MongoDB অ্যাগ্রিগেশন: ডকুমেন্টস জুড়ে অ্যারেতে অবজেক্টের প্রোপার্টি যোগফল বের করা


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

> db.demo131.insertOne(
    {
        "_id": 101,
        "Details": [
            { "PlayerScore": 500, "PlayerName": "Chris" },
            { "PlayerScore": 400, "PlayerName": "David" }
        ]
    }
);
{ "acknowledged" : true, "insertedId" : 101 }
> db.demo131.insertOne(
    {
        "_id": 102,
        "Details": [
            { "PlayerScore": 600, "PlayerName": "Chris" },
            { "PlayerScore": 200, "PlayerName": "David" }
        ]
    }
);
{ "acknowledged" : true, "insertedId" : 102 }

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

> db.demo131.find();

আউটপুট:

{ "_id" : 101, "Details" : [ { "PlayerScore" : 500, "PlayerName" : "Chris" }, { "PlayerScore" : 400, "PlayerName" : "David" } ] }
{ "_id" : 102, "Details" : [ { "PlayerScore" : 600, "PlayerName" : "Chris" }, { "PlayerScore" : 200, "PlayerName" : "David" } ] }

অ্যারেতে অবজেক্টের প্রোপার্টি যোগফল বের করার কোয়েরি:

> db.demo131.aggregate([
    { $unwind: "$Details" },
    {
        $group: {
            _id: "$Details.PlayerName",
            Value: { $sum: "$Details.PlayerScore" }
        }
    },
    {
        $group: {
            _id: 0,
            Details: { $push: { Details: "$_id", Value: "$Value" } }
        }
    },
    { $project: { Details: 1, _id: 0 } }
])

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

{ "Details" : [ { "Details" : "David", "Value" : 600 }, { "Details" : "Chris", "Value" : 1100 } ] }

  1. MongoDB অগ্রেশন ফ্রেমওয়ার্কে অ্যারের দৈর্ঘ্য অনুযায়ী সর্ট করা

  2. MongoDB-এ $lookup ব্যবহার করে ObjectId-এর অ্যারে সাথে জয়েন করা

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

  4. MongoDB-এ অ্যারে অবজেক্টের নির্দিষ্ট ইনডেক্স আপডেট করা