假设我正在Neo4j
上实现用户友好关系。我正在使用spring-neo4j
进行建模。
用户作为朋友彼此相关。我们可以吸引用户朋友,这是first level relationship
。有没有办法在second level relationship
中吸引朋友third level relationship
和Neo4J
,尤其是spring-neo4j
?
谢谢!
可以动态给出关联级别吗?我有一件可以找到各个级别的每一个。
MATCH u1-[:friend*]->(u2)
WHERE u1.userId IN ["userId1"]
RETURN u2
我编辑的问题是,我可以给出一个关系级别并获得结果。例如,我正在给2并尝试获得二级朋友。如果我给3,它应该返回3级朋友。这可以动态给出吗?
答案 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);