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

MongoDB অগরিগেশনে ম্যাক্স ভ্যালু সহ অ্যারে এলিমেন্ট ম্যাচ এবং গ্রুপ করা

MongoDB-তে অ্যারে এলিমেন্ট ম্যাচ এবং গ্রুপ করতে $group এবং $max ব্যবহার করুন। একটি কালেকশন তৈরি করুন নেস্টেড অ্যারে ডকুমেন্টের সাথে:

> db.demo510.insertOne({
    details:[
        { Name:"Chris", Score:56 },
        { Name:"David", Score:45 }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8845fa987b6e0e9d18f582") }
> db.demo510.insertOne({
    details:[
        { Name:"Chris", Score:56 },
        { Name:"David", Score:47 }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8845fb987b6e0e9d18f583") }
> db.demo510.insertOne({
    details:[
        { Name:"Chris", Score:45 },
        { Name:"David", Score:91 }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8845fb987b6e0e9d18f584") }

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

> db.demo510.find();

আউটপুট:

{ "_id" : ObjectId("5e8845fa987b6e0e9d18f582"), "details" : [ { "Name" : "Chris", "Score" : 56 }, { "Name" : "David", "Score" : 45 } ] }
{ "_id" : ObjectId("5e8845fb987b6e0e9d18f583"), "details" : [ { "Name" : "Chris", "Score" : 56 }, { "Name" : "David", "Score" : 47 } ] }
{ "_id" : ObjectId("5e8845fb987b6e0e9d18f584"), "details" : [ { "Name" : "Chris", "Score" : 45 }, { "Name" : "David", "Score" : 91 } ] }

ম্যাক্স ভ্যালু সহ অ্যারে এলিমেন্ট ম্যাচ এবং গ্রুপ করার অগরিগেশন কোয়েরি:

> db.demo510.aggregate([
    { "$project": {
        "details": {
            "$arrayElemAt": [
                { "$filter": {
                    "input": "$details",
                    "as": "res",
                    "cond": {
                        "$eq": [
                            "$$res.Score",
                            { "$max": {
                                "$map": {
                                    "input": "$details",
                                    "as": "out",
                                    "in": "$$out.Score"
                                }
                            }}
                        ]
                    }
                }},
                0
            ]
        }
    }},
    { "$group": {
        "_id": "$details.Name",
        "Name": { "$first": "$details.Name" },
        "count": { "$sum": 1 }
    }}
])

আউটপুট:

{ "_id" : "David", "Name" : "David", "count" : 1 }
{ "_id" : "Chris", "Name" : "Chris", "count" : 2 }

ব্যাখ্যা: এই জটিল অগরিগেশন পাইপলাইন প্রথমে $project এবং $filter ব্যবহার করে প্রতিটি ডকুমেন্টের details অ্যারেতে সর্বোচ্চ Score 가진 এলিমেন্টটি বের করে। তারপর $group দিয়ে নাম অনুযায়ী গ্রুপ করে কাউন্ট করে। Chris-এর দুটি ডকুমেন্টে সর্বোচ্চ স্কোর 56 ছিল, David-এর একটি ডকুমেন্টে 91 ছিল।

  1. জাভাস্ক্রিপ্টে অ্যারে-এর সর্বোচ্চ মান কীভাবে বের করবেন?

  2. জাভাস্ক্রিপ্টে একই অ্যারেতে অ্যারের এলিমেন্টগুলো ডুপ্লিকেট করা

  3. MongoDB অ্যাগ্রিগেশন: অ্যারে এলিমেন্টের সাবসেট যোগ করা ($first + $sum + $subtract)

  4. MongoDB এগ্রিগেশন: এমবেডেড ডকুমেন্টের অ্যারে প্যারেন্টে আনা এবং কী/ভ্যালু পরিবর্তন