probably the better way to do this is with the database structure

if there are not that many clients per product then yes you can keep a list of clients on the product - but if there are many then that’s an inefficient way to do it

if there are limited products you could store it on the client, but again if there are many it’s very inefficient to store a long list this way

better option is a separate data type
client_purchase - client, product, status

your search could function several ways depending on the data structure

  1. search for clients minus list (search for products where product is product) products clients
  2. search for clients where product list doesn’t contain product
  3. search for clients minus search for client_purchases where purchase is product

essentially 1 and 3 minus off a second search from the first search
2 does 1 search with constraints

#3 would be the most flexible and scalable

if you wanted to filter by products type (not the product itself) then I’d also store the type on the client_products data - saves doing a nested search which can be slow and WU high