Найти узлы с более чем одним общим отношением - PullRequest
1 голос
/ 12 мая 2019

Я использовал CREATE UNIQUE для идентификации узлов с одним общим отношением:

MATCH (u1:User)-[a:Score]->(g:Games)<-[b:Score]-(u2:User)
WITH u1, u2
CREATE UNIQUE (u1)-[:Common]->(u2)

, но у меня возникает проблема, когда я хочу идентифицировать узлы, когда пользователи имеют более одного (например, 3) общего отношения с показомколичество игр, которое объединяет пара пользователей.Я пробовал разные запросы, и это один из них:

MATCH (u1:User)-[a:Score]->(g:Games)<-[b:Score]-(u2:User)
MATCH (u1)-[a:Score]->(g1:Games), (u1)-[b:Score]->(g2:games)
WITH u1, u2, COUNT(DISTINCT s1) AS s1Count, COUNT(DISTINCT s2) AS s2Count
MATCH (u1)-[a:Score]->(g:Games)<-[b:Score]-(u2)
WITH u1, u2, s1Count, s2Count, COUNT(g) AS commonGamesCount
WHERE commonGamesCount >= 3
RETURN u1, u2

Я хочу видеть результаты в точности как CREATE UNIQUE.

1 Ответ

0 голосов
/ 12 мая 2019

Вы можете рассчитывать общие отношения:

MATCH (u1:User)-[a:Score]->(g:Games)<-[b:Score]-(u2:User)
WITH u1, u2, count(g) as g_count
WHERE g_count >= 3
CREATE UNIQUE (u1)-[:Common3]->(u2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...