Database
db={"col1":[{"id":"1","some_field":"test","rates":[{"user_id":"12","rate":"very_good"},{"user_id":"13","rate":"very_good"},{"user_id":"14","rate":"bad"},{"user_id":"15","rate":"normal"}]}],"col2":[{"rate_name":"bad","rate_value":1},{"rate_name":"normal","rate_value":2},{"rate_name":"very_good","rate_value":3}]}
Query
db.col1.aggregate([{$unwind:"$rates"},{"$lookup":{"from":"col2","localField":"rates.rate","foreignField":"rate_name","as":"rates"}},{"$unwind":"$rates"},{$group:{_id:"$_id",some_field:{$first:"$some_field"},rates:{$push:"$rates.rate_value"}}}])