Database
db={"source":[{"names":["name 1","name 2","name 3"]}],"names":[{"name":"name 1","id":1},/** populate*/{"name":"name 1","id":2},/** ignore*/{"name":"name 2","id":3},/** populate*/{"name":"name 2","id":4},/** ignore*/{"name":"name 3","id":5},]}
Query
db.source.aggregate([{"$lookup":{"from":"names","localField":"names","foreignField":"name","pipeline":[{$group:{_id:"$name",record:{"$first":"$$ROOT"}}},{"$replaceRoot":{"newRoot":"$record"}}],"as":"names"}}])