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

MongoDB-এ $unwind ব্যবহার করে কাউন্ট বের করা


নেস্টেড অ্যারে আনয়ান্ড করে কন্ডিশনাল কাউন্ট

MongoDB-এ নেস্টেড অ্যারে বিচ্ছিন্ন ($unwind) করে প্রতিটি এলিমেন্টকে আলাদা ডকুমেন্ট বানিয়ে, শর্তসাপেক্ষ ($cond) কাউন্ট করতে অ্যাগ্রিগেশন ব্যবহার করা হয়।

নমুনা ডেটা তৈরি

> db.demo478.insertOne({
    "Details": {
        _id: 1,
        "Information": [
            { "Name": "Chris", "Age": 21 },
            { "Name": "David", "Age": 23 },
            { "Name": null, "Age": 22 },
            { "Name": null, "Age": 24 }
        ]
    }
})
> db.demo478.insertOne({
    "Details": {
        _id: 2,
        "Information": [
            { "Name": "Bob", "Age": 21 },
            { "Name": null, "Age": 20 }
        ]
    }
})

সমস্ত ডকুমেন্ট দেখানো

> db.demo478.find()

আউটপুট:

{ "_id": ObjectId("..."), "Details": { "_id": 1, "Information": [{ "Name": "Chris", "Age": 21 }, { "Name": "David", "Age": 23 }, { "Name": null, "Age": 22 }, { "Name": null, "Age": 24 }] } }
{ "_id": ObjectId("..."), "Details": { "_id": 2, "Information": [{ "Name": "Bob", "Age": 21 }, { "Name": null, "Age": 20 }] } }

$unwind দিয়ে কন্ডিশনাল কাউন্ট (Name null নয় এমন কেস)

> db.demo478.aggregate([
    { $unwind: "$Details.Information" },
    { $group: {
        _id: "$Details.Information.Age",
        count: { $sum: { $cond: [ { $gt: ["$Details.Information.Name", null] }, 1, 0 ] } }
    }},
    { $sort: { count: -1 } }
])

ফলাফল:

{ "_id": 21, "count": 2 }
{ "_id": 23, "count": 1 }
{ "_id": 24, "count": 0 }
{ "_id": 20, "count": 0 }
{ "_id": 22, "count": 0 }

ব্যাখ্যা

  1. $unwind: "$Details.Information": নেস্টেড অ্যারে বিচ্ছিন্ন করে প্রতিটি ইনফরমেশন অবজেক্টকে আলাদা ডকুমেন্ট বানায়
  2. $group: Age অনুযায়ী গ্রুপ করে
  3. $cond: যদি Name > null (অর্থাৎ Name আছে এবং null নয়) হয় তবে ১ যোগ করে, অন্যথায় ০
  4. $sort: { count: -1 }: সর্বোচ্চ কাউন্ট আগে দেখানোর জন্য

ফলাফলে Age 21 দুইবার আসেছে (Chris, Bob) এবং দুটোই Name আছে, তাই count=2। বাকি Age-গুলোতে Name null, তাই count=0।

  1. MongoDB-এ কী (key) দিয়ে নেস্টেড অবজেক্টের চাইল্ড ফিল্ড অ্যাক্সেস করা

  2. MongoDB-এ ইন্ডেক্স তৈরি করে নির্দিষ্ট মানের কাউন্ট দ্রুত বের করা

  3. MongoDB Group কোয়েরি ব্যবহার করে ডকুমেন্টে পুনরাবৃত্ত ماركের কাউন্ট বের করা

  4. MongoDB Aggregation-এ ডুপ্লিকেট নামের কাউন্ট ও সাবজেক্ট লিস্ট বের করা