Database
db={"tag":[{_id:ObjectId("61b873ec6d075801f7a97e18"),name:"TestTag",category:"A"}],"computer":[{_id:ObjectId("6098c5ab615d9e23543d0f6f"),name:"TestComputer",category:"A",tags:[ObjectId("61b873ec6d075801f7a97e18")]}],"setting":[{_id:ObjectId("61e56339b528bf009feca149"),name:"TestSetting",category:"A",tags:[ObjectId("61b873ec6d075801f7a97e18")]}]}
Query
db.tag.aggregate([{$group:{_id:{name:"$name",category:"$category"},tags:{"$addToSet":"$_id"}}},{"$lookup":{"from":"computer","localField":"tags","foreignField":"tags","let":{c:"$_id.category"},"pipeline":[{$match:{$expr:{$eq:["$$c","$category"]}}},{$project:{"_id":1}}],"as":"computers"}},{"$lookup":{"from":"setting","localField":"tags","foreignField":"tags","let":{c:"$_id.category"},"pipeline":[{$match:{$expr:{$eq:["$$c","$category"]}}},{$project:{"_id":1}}],"as":"settings"}},{$project:{_id:0,name:"$_id.name",category:"$_id.category",computers:{"$map":{"input":"$computers","as":"c","in":"$$c._id"}},settings:{"$map":{"input":"$settings","as":"s","in":"$$s._id"}}}},{"$merge":{"into":"groups","on":"_id","whenMatched":"merge"}}])