Neo4J查询相关用户

时间:2019-01-10 15:00:58

标签: neo4j cypher graph-databases spring-data-neo4j

在Neo4J中,我有以下示例,用户彼此感兴趣。有两个连接,因为每个用户可以分别设置权重因子,并且某些用户可能彼此不感兴趣。

enter image description here

我想编写一个Cypher查询,该查询可以检索用户的相关用户,但还可以告诉我哪些用户已连接。

例如,对于用户Fred,返回Tom,Jane,还返回Jane对Tom感兴趣。鲍勃和莎拉不应该回来。

这是我到目前为止所拥有的:

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 :(得分:1)

这可能会做您想要的:

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)的利益以及他们的共同利益。