Estou tentando verificar se existe alguma combinação de relacionamentos, mas só me importo se houver pelo menos um. Como as travessias aumentam em complexidade, seria ideal se eu pudesse quebrar e retornar a consulta na primeira correspondência.
Exemplo:
MATCH (p:Person { id: "user_1" }), (m:Movie { id: "movie_x" })
OPTIONAL MATCH (p)-[acted:ACTED_IN]->(m)
OPTIONAL MATCH (p)-[directed:DIRECTED]->(m)
OPTIONAL MATCH (p)-[:ACTED_IN]->(:Movie)<-[:PRODUCED_BY]-(:Studio)-[sibling_actor:PRODUCED_BY]->(m)
OPTIONAL MATCH (p)-[:DIRECTED]->(:Movie)-[:OF_TYPE]->(:Genre)<-[sibling_director:OF_TYPE]-(m)
RETURN count(acted) > 0 AS actedInMovie, count(directed) > 0 AS directedMovie, count(sibling_actor) > 0 AS actedInSibling, count(sibling_director) > 0 AS directedSibling
Isso retornará a veracidade da existência de CADA um desses padrões, mas como só me importo se UM corresponder, adoraria não executar todas as quatro correspondências opcionais se a primeira encontrar uma correspondência.