Database

db={designTypes:[{"_id":1,"name":"A","image":"A","status":true},{"_id":2,"name":"B","image":"B","status":true}],tagTypes:[{"_id":1,"name":"TA","design_type":1,"order":2,"status":true},{"_id":2,"name":"TB","design_type":1,"order":1,"status":true}],tags:[{"name":"TNAME","tag_type":1,"image":"TIM","order":3,"status":true},{"name":"TNE","tag_type":1,"image":"TIM","order":1,"status":true},{"name":"TNAME","tag_type":2,"image":"TIM","order":1,"status":true},{"name":"TNE","tag_type":2,"image":"TIM","order":2,"status":true}]}

Query

db.tagTypes.aggregate([{$lookup:{from:"tags",localField:"_id",foreignField:"tag_type",as:"tags"}},{$unwind:"$tags"},{$sort:{"tags.order":-1}},{$group:{_id:"$_id",name:{$first:"$name"},order:{$first:"$order"},design_type:{$first:"$design_type"},status:{$first:"$status"},tags:{$push:"$tags"}}},{$lookup:{from:"designtypes",localField:"design_type",foreignField:"_id",as:"designtype"}},{$project:{_id:1,name:1,tag_type:1,order:1,"designtype.name":1,"tags._id":1,"tags.name":1,"tags.image":1,"tags.order":1,totalTags:{$size:"$tags"}}},{$sort:{"order":-1}}])

Result