Как получить список фильмов, в которых пары актеров играли вместе, используя Neo4j? - PullRequest
0 голосов
/ 27 января 2019

У меня есть два типа узлов: Актер и Кино.
Я хочу сгруппировать актеров по фильмам, в которых они играли.
Вот почему я создал запрос Cypher:

MATCH (a1:Actor)-[:performed_in]->(m:Movie)<-[:performed_in]-(a2:Actor) 
RETURN a1.name, a2.name, 
COLLECT(DISTINCT m.name)

К сожалению,результат не такой, как мне нужно.
Проблема в том, что у меня есть такая таблица:

a1       a2       m
Sam      Joe      Movie1, Movie2
Joe      Sam      Movie1, Movie2

Как видите, у меня есть две строки, которые в этой ситуации означают одно и то же.
Как мне от этого избавиться?

1 Ответ

0 голосов
/ 27 января 2019

Я знаю, что это похоже на взлом, но как насчет:

MATCH (a1:Actor)-[:performed_in]->(m:Movie)<-[:performed_in]-(a2:Actor)
WHERE id(a1) < id(a2)
RETURN a1.name, a2.name, COLLECT(DISTINCT m.name)

Настаивание, чтобы внутренний ID одного узла был меньше другого, даст вам результат, который, я думаю, вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...