MongoDB एग्रीगेशन में $zip: सरणियों को ट्रांसपोज़ करना
$zip ऑपरेटर एकाधिक सरणियों को लेता है और उनके संगत इंडेक्स पर तत्वों को जोड़कर ऑब्जेक्ट्स की एक सरणी बनाता है (जैसे Python का zip())। फिर $map + $objectToArray/$arrayToObject का उपयोग करके वांछित आकार में ढाला जा सकता है।
नमूना डेटा
> db.demo339.insertOne({Id: 101, Score1: ["98", "56"], Score2: [67, 89]});
{ "acknowledged": true, "insertedId": ObjectId("5e529ee5f8647eb59e5620a2") }
एग्रीगेशन: Score1 और Score2 को जोड़ना
> db.demo339.aggregate([
{
$project: {
AllArrayObject: {
$map: {
input: {
$objectToArray: {
$arrayToObject: {
$zip: {inputs: ["$Score1", "$Score2"]}
}
}
},
as: "el",
in: {Score1: "$$el.k", Score2: "$$el.v"}
}
}
}
}
]);
परिणाम
{ "AllArrayObject": [ {"Score1": "98", "Score2": 67}, {"Score1": "56", "Score2": 89} ] }
दो सरणियों के संगत तत्व अब ऑब्जेक्ट्स की सरणी में जोड़े गए हैं। सरल दृष्टिकोण (MongoDB 5.0+): $zip सीधे inputs सरणी लेता है और useLongestLength विकल्प का समर्थन करता है। जटिल रूपांतरण के लिए $map/$reduce का उपयोग करें।