Database
db={"items":[{"Name":"One","Identifier":"RA"},{"Name":"Two","Identifier":"RA"},{"Name":"Three","Identifier":"RA"},{"Name":"Four","Identifier":"SA"},{"Name":"Five","Identifier":"SA"},{"Name":"Six","Identifier":"WA"}],"Mapper":[{"Type":"TAA","Identifier":"RA"},{"Type":"TAB","Identifier":"SA"},{"Type":"TAC","Identifier":"TA"},{"Type":"TAD","Identifier":"WA"}],"Parent":[{"ParentName":"MS","Type":"TAA"},{"ParentName":"MS","Type":"TAB"},{"ParentName":"MS","Type":"TAC"},{"ParentName":"MS","Type":"TAD"},{"ParentName":"GP","Type":"TAA"},{"ParentName":"GP","Type":"TAB"},{"ParentName":"GP","Type":"TAC"}]}
Query
db.items.aggregate([{"$lookup":{"from":"Mapper","let":{"itemIndetifier":"$Identifier"},"pipeline":[{"$match":{"$expr":{"$eq":["$$itemIndetifier","$Identifier"]}}},{"$lookup":{"from":"Parent","let":{"type":"$Type"},"pipeline":[{"$match":{"$expr":{"$and":[{"$eq":["$ParentName","GP"]},{"$eq":["$$type","$Type"]}]}}}],"as":"joined1"}},{"$unwind":{"path":"$joined1","preserveNullAndEmptyArrays":true}}],"as":"joined2"}},{"$unwind":{"path":"$joined2"}},{"$project":{"_id":0,"Name":1,"Identifier":1,"Type":"$joined2.joined1.Type"}}])