我有像
这样的用户数据 Id Username
---------------------------
1 user1
2 user2
3 user3
4 user4
5 user5
用户之间可能存在friends
关系。
现在假设我是user1
,那么我需要一个有朋友计数和共同计数的用户列表
在我的数据库中
user2
有两个朋友user3, user4
。user4
是user3
我试过像这样
MATCH (me:user {is_deleted:false})
WHERE id(me)= 1
MATCH (allUser:user {is_deleted:false})
OPTIONAL MATCH (allUser)<-[all_friends:friends]-(f:user {is_deleted:false})
OPTIONAL MATCH (me)-[mutual_friends:friends]->(f)
RETURN id(allUser) AS user_id, allUser.username AS username, count(distinct(all_friends)), count(distinct(mutual_friends))
它为我提供all_friend
正确的计数。
但是没有正确地计算mutual_friends
,即使有现实,它也会返回0.
注意: - 此查询在neo4j 2.1
上正常工作,但无法在neo4j 2.2
上工作。
在我的查询中应该做些什么才能使其正常工作。
请告诉我是否应该详细解释这个问题。
感谢。