MongoDB में एग्रीगेट फंक्शन का उपयोग
सबसे पहले, एक कलेक्शन बनाते हैं और उसमें डॉक्यूमेंट्स इन्सर्ट करते हैं:
> db.demo121.insertOne(
{
"Id": 101,
"Details": [
{
"SubjectId": "1",
"SubjectName": "MongoDB",
"Score": 76
},
{
"SubjectId": "2",
"SubjectName": "MySQL",
"Score": 76
},
{
"SubjectId": "3",
"SubjectName": "Java",
"Score": 76
}
]
}
);
{ "acknowledged": true, "insertedId": ObjectId("5e2f1c60140daf4c2a3544b3") }
सभी डॉक्यूमेंट्स देखना
find() मेथड का उपयोग करके सभी डॉक्यूमेंट्स डिस्प्ले करें:
> db.demo121.find();
आउटपुट:
{ "_id": ObjectId("5e2f1c60140daf4c2a3544b3"), "Id": 101, "Details": [ { "SubjectId": "1", "SubjectName": "MongoDB", "Score": 76 }, { "SubjectId": "2", "SubjectName": "MySQL", "Score": 76 }, { "SubjectId": "3", "SubjectName": "Java", "Score": 76 } ] }
एग्रीगेशन पाइपलाइन क्वेरी
निम्न क्वेरी एग्रीगेट फंक्शन को लागू करती है:
> db.demo121.aggregate([
{ "$match": { "Id": 101 } },
{ "$unwind": "$Details" },
{
"$group": {
"_id": "$Details.SubjectId",
"count": { "$sum": 1 },
"Details": {
"$push": {
"SubjectName": "$Details.SubjectName"
}
}
}
},
{
"$group": {
"_id": null,
"List": {
"$push": {
"SubId": "$_id",
"Details": "$Details"
}
}
}
}
], function (err, out) {
res.json(out);
});
परिणाम
यह निम्न आउटपुट देगा:
{ "_id": null, "List": [ { "SubId": "3", "Details": [ { "SubjectName": "Java" } ] }, { "SubId": "2", "Details": [ { "SubjectName": "MySQL" } ] }, { "SubId": "1", "Details": [ { "SubjectName": "MongoDB" } ] } ] }
व्याख्या
- $match: Id 101 वाले डॉक्यूमेंट्स को फ़िल्टर करता है
- $unwind: Details ऐरे को डी-कंस्ट्रक्ट करता है
- पहला $group: SubjectId के अनुसार ग्रुप करता है, काउंट और SubjectName जोड़ता है
- दूसरा $group: सभी परिणामों को एक List ऐरे में संयोजित करता है