MongoDB में नेस्टेड सरणियों को फ्लैट करके एकल सरणी प्राप्त करने के लिए एग्रीगेशन फ्रेमवर्क में $unwind और $group स्टेज का उपयोग करें।
उदाहरण
जटिल नेस्टेड सरणी वाला दस्तावेज़ बनाएं:
> db.getArrayDemo.insertOne(
{
"CustomerId": 101,
"CustomerDetails": [
{
"CustomerName": "Larry",
"CustomerFriendDetails": [
{"CustomerFriendName": "Sam"},
{"CustomerFriendName": "Robert"}
]
},
{
"CustomerName": "Chris",
"CustomerFriendDetails": [
{"CustomerFriendName": "David"},
{"CustomerFriendName": "Carol"}
]
}
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cda4949b50a6c6dd317adb7") }
दस्तावेज़ देखें:
> db.getArrayDemo.find().pretty();
एग्रीगेशन से सभी दोस्तों के नाम एक सरणी में प्राप्त करें
> db.getArrayDemo.aggregate([
{ "$unwind": "$CustomerDetails" },
{ "$unwind": "$CustomerDetails.CustomerFriendDetails" },
{
"$group": {
"_id": null,
"CustomerFriendDetails": { "$push": "$CustomerDetails.CustomerFriendDetails.CustomerFriendName" }
}
}
]);
आउटपुट:
{ "_id" : null, "CustomerFriendDetails" : [ "Sam", "Robert", "David", "Carol" ] }
चरण दर चरण:
$unwind: "$CustomerDetails"- बाहरी सरणी को फ्लैट करता है$unwind: "$CustomerDetails.CustomerFriendDetails"- आंतरिक सरणी को फ्लैट करता है$groupके साथ$push- सभी नामों को एक सरणी में संग्रहीत करता है
उपयोग: यह पैटर्न रिपोर्टिंग, विश्लेषण, या किसी भी स्थिति के लिए उपयोगी है जहां नेस्टेड सरणियों से मान निकालकर एकल सूची बनानी हो।