我需要一个MATCH,其中两种关系都是正确的。我了解(person1)-[:r1 |:r2]-(person2)。我遇到的问题是MATCH中的一个遍历另一个节点。 IE:
(p1:person)-[:FRIEND]-(p2:person)-[:FRIEND]-(p3:person)
所以我想要这种逻辑。我敌人的敌人是我的朋友。我的朋友是我的朋友。是我的朋友的所有名字的输出列表。我还将关系限制为特定值。
类似的东西:
MATCH (p1:Person)-[:ENEMY{type:'human'}]-(myEnemy:Person)-[enemy2:ENEMY{type:'human'}]-(myFriend:Person)
OR (p1:Person)-[friend:FRIEND{type:'human'}]-(myFriend:Person)
RETURN p1.name, myFriend.name
我需要一个列表,然后可以对其进行汇总。
这是我的第一篇文章。...所以,如果我的问题一团糟...用您的反馈打我,我会澄清一下:)
答案 0 :(得分:0)
您可以使用UNION子句合并两个查询,并删除重复的结果:
<Pagination
defaultCurrent={1}
defaultPageSize={9}
onChange={handleChange}
total={mydata.length}
// ^ This was hard-coded
/>
进行MATCH (p:Person)-[:ENEMY{type:'human'}]-(:Person)-[:ENEMY{type:'human'}]-(f:Person)
WHERE ID(p) < ID(f)
RETURN p.name AS pName, f.name AS fName
UNION
MATCH (p:Person)-[:FRIEND{type:'human'}]-(f:Person)
WHERE ID(p) < ID(f)
RETURN p.name AS pName, f.name AS fName
过滤是为了避免将相同的一对ID(p) < ID(f)
名称返回两次(以相反的顺序)。
[更新]
要获取每个Person
有多少个朋友的计数,您可以利用新的CALL subquery语法(在neo4j 4.0中)来进行{{3} }:
Person