हाँ, $arrayToObject
का उपयोग करके
और $map
मौजूदा सरणी को उस प्रारूप में बदलने के लिए जिसे वह स्वीकार करता है:
db.collection.aggregate([
{ "$replaceRoot": {
"newRoot": {
"$arrayToObject": {
"$concatArrays": [
[{ "k": "date", "v": "$_id.date" }],
{ "$map": {
"input": "$aggr",
"in": { "k": "$$this.gender", "v": "$$this.count" }
}}
]
}
}
}}
])
बेशक अगर यह वास्तव में केवल मौजूदा एकत्रीकरण की "पूंछ" पर है और आपके पास कम से कम मोंगोडीबी 3.4.4 नहीं है जहां ऑपरेटर पेश किया गया है, तो आप क्लाइंट कोड में परिणाम को आसानी से दोबारा बदल सकते हैं:
db.collection.aggregate([
// existing pipeline
]).map(d =>
Object.assign(
{ date: d._id.date },
d.aggr.reduce((acc,curr) =>
Object.assign(acc,{ [curr.gender]: curr.count }),{}
)
)
)