This will probably be relevant to you soon
But for now, I think you are on the right track, to assign a field against your monitor's usernames (choice list / csv / entity list) as the zone(s) applicable as a space delimited array and use a selected
(or contains
, but more risky with unintended matches) expression in your choice filter to prune the farm list down to those with matching zone(s).
Once the username is selected (or entered and matches an item in the list), the zones can be determined with an instance lookup as part of the selected expression in the choice filter selected(lookup, zones)