[英]Neo4j find nodes with the same properties
我有一个Neo4j图表,其中每个节点都是一个人。 每个人都有两个属性:姓名和城市。 关系是:朋友和爱。
我正在尝试获得仅在同一城市拥有朋友的节点(住在巴黎,巴黎B,马德里C,马德里D,A- [friend_of] - > B,B- [friend_of] - > C a A- [friend_of] - > C,D- [friend_of] - > CI只需要获得A和D,因为他们的朋友住在他们的同一个城市并且只在那里)并按城市排序,然后按名称排序。
我尝试过以下方法:
MATCH (n)-[r:FRIEND_OF]-(n1) WHERE (n.City = n1.City) RETURN n,n1 ORDER BY n.City, n.Name
这给了我想要的节点,但其中一些也是错的(他们在其他城市有朋友)。
谢谢!
基于以下neo4j控制台http://console.neo4j.org/r/5c2n8h ,此查询仅返回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
尝试这个:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.