Database

[{"key":1,"color":{"name":"Red","value":1}},{"key":2,"color":{"name":"Red","value":3}},{"key":3,"color":{"name":"Green","value":2}}]

Query

db.collection.aggregate([{$group:{_id:null,colors:{$addToSet:"$color"}}},{$set:{"colors":{$reduce:{input:"$colors",initialValue:[],in:{$cond:[{$in:["$$this.name","$$value.name"]},{$concatArrays:["$$value"]},{$concatArrays:["$$value",["$$this"]]}]}}}}}])

Result