Database
[{"students":["X","Y","Z"],"total":[150,200,100],"math":["A","A+","B+"],"math_teach":["A","B","C"]}]
Query
db.collection.aggregate([{$project:{total_students:{$size:"$students"},students:{$arrayToObject:{$map:{input:"$students",in:{k:"$$this",v:{total:{$arrayElemAt:["$total",{$indexOfArray:["$students","$$this"]}]},math:{$arrayElemAt:["$math",{$indexOfArray:["$students","$$this"]}]},math_teach:{$arrayElemAt:["$math_teach",{$indexOfArray:["$students","$$this"]}]}}}}}}}}])