Database

[{"key":1,"a":"a1","b":"b1"},{"key":1,"a":"a1","b":"b2"},{"key":1,"a":"a1","b":"b1"}]

Query

db.collection.aggregate([{$project:{_id:"$key",arr:{"$objectToArray":"$$ROOT"}}},{"$unwind":"$arr"},{$match:{"arr.k":{$nin:["key","_id"]}}},{$group:{_id:{id:"$_id",k:"$arr.k"},v:{"$addToSet":"$arr.v"}}},{$project:{_id:"$_id.id",arr:[{k:"$_id.k",v:{"$cond":{"if":{$gt:[{$size:"$v"},1]},"then":"$v","else":{$first:"$v"}}}}]}},{"$project":{doc:{"$arrayToObject":"$arr"}}},{"$replaceRoot":{"newRoot":{"$mergeObjects":[{_id:"$_id"},"$doc"]}}}])

Result