0
有了這個數據,例如:Neo4j的暗號:上市邊緣
CREATE
(p1:Person {name:"p1"}),
(p2:Person {name:"p2"}),
(p3:Person {name:"p3"}),
(p4:Person {name:"p4"}),
(p5:Person {name:"p5"}),
(p1)-[:KNOWS]->(p2),
(p1)-[:KNOWS]->(p3),
(p1)-[:KNOWS]->(p4),
(p5)-[:KNOWS]->(p3),
(p5)-[:KNOWS]->(p4)
我想P1和P5之間的共同關係:
MATCH (p1:Person {name:"p1"})-[r1:KNOWS]-(p:Person)-[r2:KNOWS]-(p5:Person {name:"p5"})
RETURN p, p1, p5
這將返回4個節點:P1,P3,P4, p5和4邊緣。
我的目標是獲得與表格行相同的邊緣:from和to。因此,這似乎工作:
MATCH (p1:Person {name:"p1"})-[r1:KNOWS]-(p:Person)-[r2:KNOWS]-(p5:Person {name:"p5"})
RETURN startNode(r1).name AS from, endNode(r1).name AS to
UNION
MATCH (p1:Person {name:"p1"})-[r1:KNOWS]-(p:Person)-[r2:KNOWS]-(p5:Person {name:"p5"})
RETURN startNode(r2).name AS from, endNode(r2).name AS to
結果是一個表:
from | to
-----|----
p1 | p3
p1 | p4
p5 | p3
p5 | p4
我的問題是:
- 它是正確的嗎?
- 這是最好的方法嗎?當有成千上萬的節點時,我的意思是關於性能。
- 而如果我想共同節點3人?