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
- search for clients minus list (search for products where product is product) products clients
- search for clients where product list doesn’t contain product
- 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