I have the following setup: user and event nodes, with (user)-[:PUBLISH]->(event). each user and event both have multiple properties. These properties vary significantly from user to user (and event to event) which makes it hard to create indexes for them, however I need to query both the users and event by these attributes in a fast manner.
The simplest form of query I need to perform: find all users with properties {x: 'a', ...} that have published at least one event with properties { y: 'b', ...} but haven't published any event with properties {z: 'c', ...}
So my questions are: how can I best model the data for this query? (and is neo4j suitable for this use case, for that matter?) and how do I make it work fast given that I MUST HAVE dynamic node attributes. AFAIK in neo4j one cannot have compound indexes, do I need to create an index for each property of user/event?
Any help/ideas will be most welcome. Thank you!