Spring-Neo4j关系等级

时间:2013-07-11 14:55:26

标签: neo4j spring-data-neo4j

假设我正在Neo4j上实现用户友好关系。我正在使用spring-neo4j进行建模。

用户作为朋友彼此相关。我们可以吸引用户朋友,这是first level relationship。有没有办法在second level relationship中吸引朋友third level relationshipNeo4J,尤其是spring-neo4j

谢谢!

编辑:

可以动态给出关联级别吗?我有一件可以找到各个级别的每一个。

MATCH u1-[:friend*]->(u2) 
WHERE u1.userId IN ["userId1"] 
RETURN u2

我编辑的问题是,我可以给出一个关系级别并获得结果。例如,我正在给2并尝试获得二级朋友。如果我给3,它应该返回3级朋友。这可以动态给出吗?

2 个答案:

答案 0 :(得分:0)

不完全确定这里的具体问题是什么,但这是你如何使用spring-data-neo4j来做到这一点

@NodeEntity
public class User
{
 @RelatedTo(type="FRIEND")
 Set<User> friends;

 private Iterable<Person> friends;

  @Query(value = "start n=node({self}) match (u)-[r]->(friend)-[r]->(friendOfFriend) where   r.type = 'FRIEND' return friendOfFriend")
 Iterable<User> friendsOfFriends;
}

答案 1 :(得分:0)

我的问题的编辑部分是Anwser;

MATCH u1-[:friend*relationLevel]->(u2) 
WHERE u1.userId IN ["userId1"] 
RETURN u2

relationLevel是我想要的级别。如果是2,则结果仅为2级关系。

可能是在春天,

@Query("start user1=node({0}) match (user1)-[r:friend*{1}]->(user2) where has(user2.userId) return user2.userId")
Iterable<String> getRelatedUserIdsByRelationLevel(GraphUser graphUser,int relationLevel);