Database
[{_id:1,history:[{_id:1,date:"2021-03-01",type:"Departure"},{_id:2,date:"2021-01-01",type:"Arrival"}]},{_id:2,history:[{_id:1,date:"2021-07-03",type:"Departure"},{_id:2,date:"2021-02-10",type:"Arrival"}]},{_id:3,history:[{_id:1,date:"2021-11-5",type:"Departure"},{_id:2,date:"2021-08-22",type:"Arrival"}]}]
Query
db.collection.aggregate([{"$match":{}},{"$set":{arrival:{$dateFromString:{dateString:{$arrayElemAt:["$history.date",1]}}},departure:{$dateFromString:{dateString:{$arrayElemAt:["$history.date",0]}}}}},{"$set":{monthDiff:{$dateDiff:{startDate:"$arrival",endDate:"$departure",unit:"month"}}}},{"$set":{historyRange:{"$map":{"input":{$range:[0,{$add:["$monthDiff",1]},1]},"as":"m","in":{item:{$dateAdd:{startDate:"$arrival",unit:"month",amount:"$$m"}}}}}}},{"$project":{historyRange:{"$map":{"input":"$historyRange","as":"h","in":{year:{$year:"$$h.item"},month:{$month:"$$h.item"}}}}}},{"$unwind":"$historyRange"},{"$group":{"_id":"$historyRange","counter":{"$sum":1}}},{"$project":{_id:0,counter:1,month:"$_id.month",year:"$_id.year"}},{"$sort":{month:1}}])