Neo4J-запрос для связанных пользователей - PullRequest
0 голосов
/ 10 января 2019

У меня есть следующий пример в Neo4J, где пользователи интересуются друг другом. Существует два соединения, поскольку каждый пользователь может индивидуально установить весовой коэффициент, и некоторые пользователи могут не интересоваться друг другом.

enter image description here

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

Например, для пользователя Фред, верните Тома, Джейн, а также верните, что Джейн заинтересована в Томе. Боб и Сара не должны быть возвращены.

Вот что у меня есть:

MATCH (u:User)-[r1:INTERESTED_IN]->(u2:User)
WHERE u.emailAddress ='fred@mail.com'
OPTIONAL MATCH (u)-[r2:INTERESTED_IN]->(u3:User)
OPTIONAL MATCH (u2)-[r3:INTERESTED_IN]->(u3)
RETURN u, r1, u2, r2, u3, r3

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

Буду признателен за любую помощь.

1 Ответ

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

Это может делать то, что вы хотите:

MATCH (u:User)-[:INTERESTED_IN]->(u2:User)
WHERE u.emailAddress = 'fred@mail.com'
OPTIONAL MATCH (u)-[:INTERESTED_IN]->(u3:User)<-[:INTERESTED_IN]-(u2)
RETURN u, u2, COLLECT(u3) AS mutualInterests

В каждой строке результатов возвращается процент u (т.е. u2) вместе с их взаимными интересами.

...