Database
db={"user_group_mapping":[{"user_id":"123","group_id":"beta_users"},{"user_id":"213","group_id":"alpha_testers"}],"config_rules":[{"rule_type_value":"beta_users","configType":"help","configVersion":"1.1"},{"rule_type_value":null,"configType":"help","configVersion":"1.0"},{"rule_type_value":"alpha_testers","configType":"help","configVersion":"1.3"}]}
Query
db.config_rules.aggregate([{$lookup:{from:"user_group_mapping",localField:"rule_type_value",foreignField:"group_id",as:"rule"}},{$addFields:{"ruleCount":{$size:"$rule",},"user_id":{$first:"$rule.user_id"}}},{$match:{"configType":"help"}},{$match:{$or:[{user_id:{$eq:"678"/**123 or 678*/}},{user_id:{$exists:false}}]}},{$sort:{"ruleCount":-1}},{$limit:1},{$project:{"_id":0,"rule_type_value":1,"configType":1,"configVersion":1}}])