Database

[{date:"2019-06-12T00:09:03.000Z",actions:{actionDate:"2019-06-12T00:15:25.000Z",data:{users:[[{gender:"Male",age:24},{gender:"Female",age:25}],[{gender:"Male",age:34},{gender:"Male",age:26}],[{gender:"Female",age:19},{gender:"Male",age:21}]]}}},{date:"2019-06-13T00:09:03.000Z",actions:{actionDate:"2019-06-13T00:15:25.000Z",data:{users:[[{gender:"Male",age:24}],[{gender:"Male",age:34},{gender:"Male",age:26}],[{gender:"Male",age:21}]]}}},{date:"2019-06-14T00:09:03.000Z",actions:{actionDate:"2019-06-14T00:15:25.000Z",data:{users:[[{gender:"Male",age:24},{gender:"Female",age:30}]]}}}]

Query

db.collection.aggregate([{$project:{date:1,actionDate:"$actions.actionDate",summary:{$reduce:{input:"$actions.data.users",initialValue:[],in:{$concatArrays:["$$value","$$this"]}}}}},{$unwind:"$summary"},{$group:{_id:"$date",actionDate:{$first:"$actionDate"},countFemale:{$sum:{$cond:[{$eq:["$summary.gender","Female"]},1,0]}},countMale:{$sum:{$cond:[{$eq:["$summary.gender","Male"]},1,0]}},meanFemaleAge:{$sum:{$cond:[{$eq:["$summary.gender","Female"]},"$summary.age",0]}},meanMaleAge:{$sum:{$cond:[{$eq:["$summary.gender","Male"]},"$summary.age",0]}}}},{$addFields:{meanFemaleAge:{$cond:[{$ne:["$meanFemaleAge",0]},{$divide:["$meanFemaleAge","$countFemale"]},0]},meanMaleAge:{$cond:[{$ne:["$meanMaleAge",0]},{$divide:["$meanMaleAge","$countMale"]},0]},}}])

Result