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",as:"tags",let:{id:"$_id"},pipeline:[{$match:{$expr:{$eq:["$$id","$tag_type"]}}},{$sort:{order:-1}}]}},{$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