MongoDB Aggregation में $group और $addToSet का संयोजन
MongoDB में एक ही एग्रीगेशन पाइपलाइन में ग्रुपिंग और डिस्टिंक्ट मान प्राप्त करने के लिए $group स्टेज के साथ $addToSet एक्यूमुलेटर का उपयोग किया जाता है। $addToSet सरणी में केवल अद्वितीय मान जोड़ता है, जिससे स्वचालित रूप से डिस्टिंक्ट परिणाम मिलता है।
नमूना डेटा: छात्र रिकॉर्ड
> db.demo16.insertOne({ "StudentName": "Chris", "StudentSection": "A", "StudentAge": 23, "StudentMarks": 47 });
{ "acknowledged": true, "insertedId": ObjectId("5e13827455d0fc6657d21f07") }
> db.demo16.insertOne({ "StudentName": "Bob", "StudentSection": "B", "StudentAge": 21, "StudentMarks": 85 });
{ "acknowledged": true, "insertedId": ObjectId("5e13827555d0fc6657d21f08") }
> db.demo16.insertOne({ "StudentName": "Carol", "StudentSection": "A", "StudentAge": 26, "StudentMarks": 97 });
{ "acknowledged": true, "insertedId": ObjectId("5e13827655d0fc6657d21f09") }
एग्रीगेशन पाइपलाइन: Group + Distinct
हम _id: null का उपयोग करके सभी डॉक्यूमेंट्स को एक ही समूह में रखते हैं और विभिन्न फ़ील्ड्स के लिए डिस्टिंक्ट मान, न्यूनतम और अधिकतम मान प्राप्त करते हैं।
> db.demo16.aggregate([
{
$group: {
_id: null,
StudentName: { $addToSet: "$StudentName" },
StudentSection: { $addToSet: "$StudentSection" },
StudentMinimumAge: { $min: "$StudentAge" },
StudentMaximumAge: { $max: "$StudentAge" },
StudentMinimumMarks: { $min: "$StudentMarks" },
StudentMaximumMarks: { $max: "$StudentMarks" }
}
}
]).pretty();
परिणाम
{
"_id": null,
"StudentName": [ "Carol", "Bob", "Chris" ],
"StudentSection": [ "B", "A" ],
"StudentMinimumAge": 21,
"StudentMaximumAge": 26,
"StudentMinimumMarks": 47,
"StudentMaximumMarks": 97
}
परिणाम में प्रत्येक फ़ील्ड के अद्वितीय मान (डिस्टिंक्ट) सरणी के रूप में और संख्यात्मक फ़ील्ड्स के लिए न्यूनतम/अधिकतम मान शामिल हैं। यह एक ही पास में सारांश सांख्यिकी प्राप्त करने का कुशल तरीका है।