0

假设我在Neo4j. 我spring-neo4j用于建模。

用户作为朋友彼此相关。我们可以带一个用户朋友,这就是first level relationship。有没有办法让朋友成为朋友second level relationship,尤其third level relationship是?Neo4Jspring-neo4j

谢谢你!

编辑:

可以动态给出关系级别吗?我有一块可以找到所有级别的每一个。

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

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

4

2 回答 2

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;
}
于 2013-07-11T19:37:54.270 回答
0

我的问题的编辑部分的答案是;

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);
于 2013-12-25T11:04:41.540 回答