Neo4j: найти человека, который играл и снимал фильмы - PullRequest
0 голосов
/ 07 июня 2019

Я хочу показать всех людей, которые действуют так же, как режиссеры фильмов.Неважно, снимает ли человек фильм, но не снимается в фильме.Пока на узле существуют ребра ACTED_IN и DIRECTED, запрос будет отображать результат.

Я пробовал несколько запросов Cypher.Я полагаю, что этот показывает ближайший результат, который я намереваюсь:

MATCH (p:Person)-[:ACTED_IN]->(m:Movie)
WHERE exists( (p)-[:DIRECTED]->() )
RETURN distinct *

Теперь проблема в том, что один из результатов показывает "Джеймс Маршалл" ACTED_IN "Несколько хороших людей", но он также направил два разных фильмакоторые являются "Ninja Assasin" и "V для Вендетты".

Мой текущий результат показывает только «Джеймс Маршалл» ACTED_IN «Несколько хороших людей» и не показывает два других фильма, которые он НАПРАВЛЕН.Итак, как я могу улучшить свой Cypher?

1 Ответ

0 голосов
/ 07 июня 2019

Вы можете сначала сопоставить людей, у которых есть нужные вам отношения (это будет проверка степени), затем сопоставить шаблон, используя оба отношения одновременно (что в противном случае совпадет с ИЛИ для рассматриваемых отношений):

MATCH (p:Person)
WHERE (p)-[:ACTED_IN]->() AND (p)-[:DIRECTED->()
MATCH path = (p)-[:ACTED_IN | DIRECTED]->(m:Movie)
RETURN path
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...