Database

db={"chat":[{"id":"test1","tags":["AAA","BBB","CCC","AAA"]},{"id":"test2","tags":["AAA","BBB","CCC"]}],"tag":[{"id":"1234","key":"AAA","name":"a"},{"id":"1235","key":"BBB","name":"b"},{"id":"1236","key":"CCC","name":"c"},{"id":"1237","key":"DDD","name":"d"},]}

Query

db.chat.aggregate([{$match:{id:"test1"}},{$lookup:{from:"tag",localField:"tags",foreignField:"key",as:"tagDocs"}},{$project:{chat:[{id:"$id",setTags:"$tags"}],tag:"$tagDocs"}}])

Result