Database

[{Category:"Car",Type:"BMW"},{Category:"Car",Type:"Ferrari",Color:"Red"},{Category:"Bikes",Type:"Mountain Bike",Speeds:"18"},{Category:"Bikes",Type:"BMX"},{Category:"Stuff",other:"data",more:"stuff"},{Category:"Stuff",more:"nonsense"}]

Query

db.collection.aggregate([{$project:{Category:1,fields:{$objectToArray:"$$ROOT"}}},{$unwind:"$fields"},{$match:{"fields.k":{$not:{$in:["_id","Category"]}}}},{$group:{_id:{Category:"$Category",key:"$fields.k"},value:{$push:"$fields.v"}}},{$group:{_id:"$_id.Category",fields:{$push:{"k":"$_id.key","v":"$value"}}}},{$project:{fields:{$arrayToObject:"$fields"}}},{$addFields:{"fields.Category":"$_id"}},{$replaceRoot:{newRoot:"$fields"}}])

Result