Database
[{"vmratings":[{"_id":"string2","vmcounts":[{"rating":2,"count":53},{"rating":3,"count":1}]},{"_id":"string","vmcounts":[{"rating":2,"count":53},{"rating":1,"count":1}]}],"sratings":[{"_id":"string2","scounts":[{"rating":1,"count":53},{"rating":4,"count":1}]},{"_id":"string","scounts":[{"rating":5,"count":1},{"rating":1,"count":53}]}],"totalAvg":[{"_id":"string2","vmratingavg":2.0185185185185186,"sratingavg":1.0555555555555556,"sratingcount":57,"vmratingcount":109},{"_id":"string","vmratingavg":1.9814814814814814,"sratingavg":1.0740740740740742,"sratingcount":58,"vmratingcount":107}]}]
Query
db.collection.aggregate([{$project:{result:{$map:{input:{$range:[0,{$size:"$vmratings"}]},as:"x",in:{$let:{vars:{id:{$arrayElemAt:["$vmratings._id","$$x"]}},in:{_id:"$$id",vmratings:{$first:{$filter:{input:"$vmratings",as:"q",cond:{$eq:["$$q._id","$$id"]}}}},sratings:{$first:{$filter:{input:"$sratings",as:"q",cond:{$eq:["$$q._id","$$id"]}}}},totalAvg:{$first:{$filter:{input:"$totalAvg",as:"q",cond:{$eq:["$$q._id","$$id"]}}}}}}}}}}},{$unwind:"$result"},{$replaceWith:{"$mergeObjects":["$result.sratings","$result.totalAvg","$result.vmratings"]}}])