Database
[{"tipo":"A","prices":[{"min_pax":1,"max_pax":3,"type":"One Way","price":35},{"min_pax":1,"max_pax":3,"type":"Round Trip","price":63},{"min_pax":4,"max_pax":6,"type":"One Way","price":40},{"min_pax":4,"max_pax":6,"type":"Round Trip","price":65},{"min_pax":7,"max_pax":10,"type":"One Way","price":50},{"min_pax":7,"max_pax":10,"type":"Round Trip","price":80}],}]
Query
db.collection.aggregate([{$unwind:"$prices"},{$group:{_id:{max_pax:"$prices.max_pax",min_pax:"$prices.min_pax"},tipo:{$first:"$tipo"},data:{$push:{k:"$prices.type",v:"$prices.price"}}}},{$project:{_id:0,tipo:1,max_pax:"$_id.max_pax",min_pax:"$_id.min_pax",data:{$arrayToObject:"$data"}}},{$set:{"data.max_pax":"$max_pax","data.min_pax":"$min_pax"}},{$group:{_id:"$tipo",prices:{$push:"$data"}}},{$project:{_id:0,tipo:"$_id",prices:1}}])