Получить только узлы, связанные с двунаправленной связью

У меня есть график neo4j, где A-[r:LOVE]->B и B-[r:LOVE]->A.

Я пытаюсь получить все узлы с этим двунаправленным отношением (некоторые узлы, например, C-[r:LOVE]->B, но B не любят C), и я должен получить их только 1 раз (я не хочу получать их дублируют) и упорядочены по именам. Я пытаюсь использовать следующее:

Match (n)-[r:LOVE]->(n1) return distinct n,n1 order by n.Name

Но это дает мне все узлы с отношениями: ЛЮБОВЬ между некоторыми из них (даже если они не двунаправленные).

Как я могу это исправить?


person carlos    schedule 26.05.2015    source источник


Ответы (1)


Чтобы найти все пары людей, между которыми есть два разнонаправленных ЛЮБОВНЫХ отношения:

MATCH (a)-[:LOVE]->(b)<-[:LOVE]-(a)
WHERE id(a)<id(b)
RETURN a,b order by a.name

Условие WHERE здесь гарантирует, что a и b не изменят роли в последующей итерации.

person Stefan Armbruster    schedule 26.05.2015