我在用户节点之间有双向 [:FRIENDSHIP] 关系:
(UserA)<-[:FRIENDSHIP {approved:true}]->(UserB)
这是Java中的一个小测试函数来设置关系:
public void approveFriendship(User requestor, User requestee) {
Friendship friendship = new Friendship(requestor, requestee);
friendship.setApproved(true);
Friendship invertedFriendship = new Friendship(requestee, requestor);
invertedFriendship.setApproved(true);
requestor.getFriendships().add(friendship);
requestee.getFriendships().add(invertedFriendship);
userRepository.save(requestor);
userRepository.save(requestee);
}
此密码查询返回 UserA 的朋友,并且工作正常:
start user=node({0})
match (user)-[r?:FRIENDSHIP]->(friends)
where r.approved = true
return friends
此密码查询返回朋友的帖子,但不起作用(返回空结果):
start n=node({0})
match (n)<-[r?:FRIENDSHIP]->(friend)<-[:AUTHOR]-(friendposts)
where r.approved = true
return friendposts order by friendposts.createdAt
当省略该where r.approved = true
行或将其更改为where r.approved = false
它时,在这两种情况下都会返回没有批准状态的朋友的帖子。
任何人都可以发现我在这里做错了什么吗?非常感谢。