MongoDB 3.4 से शुरू करके, हम $zipका उपयोग कर सकते हैं। कोड>
हमारे सरणियों को ज़िप करने के लिए ऑपरेटर।
कहा जा रहा है, जब तक आप अपने सरणी की लंबाई नहीं जानते, हम आपका अपेक्षित आउटपुट प्राप्त नहीं कर सकते।
db.collection.aggregate( [
{ "$project": {
"zipped": {
"$zip": { "inputs": [ "$A", "$B", "$C" ] }
}
}}
])
जो उत्पादन करता है:
{
"_id" : ObjectId("578f35fb6db61a299a383c5b"),
"zipped" : [
[ "A1", "B1", 100 ],
[ "A2", "B2", 200 ],
[ "A3", "B3", 300 ]
]
}
यदि हमें प्रत्येक उप-सरणी में तत्वों की संख्या ज्ञात होती है, तो हम $नक्शा
वेरिएबल ऑपरेटर जो उप-दस्तावेज़ की एक सरणी लौटाता है।
$नक्शा
. में अभिव्यक्ति, हमें उपयोग करने की आवश्यकता है $arrayElemAt
ऑपरेटर को सेट . करने के लिए हमारे क्षेत्र ए, बी, और सी का मूल्य।
db.collection.aggregate( [
{ "$project": {
"zipped": {
"$map": {
"input": {
"$zip": { "inputs": [ "$A", "$B", "$C" ] }
},
"as": "el",
"in": {
"A": { "$arrayElemAt": [ "$$el", 0 ] },
"B": { "$arrayElemAt": [ "$$el", 1 ] },
"C": { "$arrayElemAt": [ "$$el", 2 ] }
}
}
}
}}
] )
जो उत्पादन करता है:
{
"_id" : ObjectId("578f35fb6db61a299a383c5b"),
"zipped" : [
{
"A" : "A1",
"B" : "B1",
"C" : 100
},
{
"A" : "A2",
"B" : "B2",
"C" : 200
},
{
"A" : "A3",
"B" : "B3",
"C" : 300
}
]
}