Neo4j 查找具有相同属性的节点
Neo4j find nodes with the same properties
我有一个 Neo4j 图,其中每个节点都是一个人。每个人都有两个属性:姓名和城市。关系是:friend_of和爱。
我正在尝试获取仅在同一个城市有朋友的节点(A 住在巴黎,B 在巴黎,C 在马德里,D 在马德里,A-[friend_of]-> B, B-[friend_of]->C a A-[friend_of]->C, D-[friend_of]->C 我只需要得到A和D因为他们是朋友住在同一个城市,而且只住在那里)并先按城市然后按名称排序。
我试过以下方法:
MATCH (n)-[r:FRIEND_OF]-(n1) WHERE (n.City = n1.City) RETURN n,n1 ORDER BY n.City, n.Name
这给了我想要的节点,但其中一些也是错误的(他们在其他城市有朋友)。
谢谢!
试试这个:
MATCH (u:User {name:"carlos"})-[:FRIEND_OF]-(f:User)
WITH u, collect(f) as friends
WHERE ALL(f in friends WHERE f.City = u.City)
UNWIND friends as friend
RETURN friend
ORDER BY friend.City, friend.Name
基于以下 neo4j 控制台 http://console.neo4j.org/r/5c2n8h,此查询 returns 你只需要 D :
MATCH (user:User)-[:FRIEND_OF]-(friend)
WITH user, collect(friend) AS friends
WHERE ALL (f IN friends WHERE f.City = user.City)
RETURN user
ORDER BY user.City, user.name
我有一个 Neo4j 图,其中每个节点都是一个人。每个人都有两个属性:姓名和城市。关系是:friend_of和爱。
我正在尝试获取仅在同一个城市有朋友的节点(A 住在巴黎,B 在巴黎,C 在马德里,D 在马德里,A-[friend_of]-> B, B-[friend_of]->C a A-[friend_of]->C, D-[friend_of]->C 我只需要得到A和D因为他们是朋友住在同一个城市,而且只住在那里)并先按城市然后按名称排序。
我试过以下方法:
MATCH (n)-[r:FRIEND_OF]-(n1) WHERE (n.City = n1.City) RETURN n,n1 ORDER BY n.City, n.Name
这给了我想要的节点,但其中一些也是错误的(他们在其他城市有朋友)。
谢谢!
试试这个:
MATCH (u:User {name:"carlos"})-[:FRIEND_OF]-(f:User)
WITH u, collect(f) as friends
WHERE ALL(f in friends WHERE f.City = u.City)
UNWIND friends as friend
RETURN friend
ORDER BY friend.City, friend.Name
基于以下 neo4j 控制台 http://console.neo4j.org/r/5c2n8h,此查询 returns 你只需要 D :
MATCH (user:User)-[:FRIEND_OF]-(friend)
WITH user, collect(friend) AS friends
WHERE ALL (f IN friends WHERE f.City = user.City)
RETURN user
ORDER BY user.City, user.name