:の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エッジ。
私の目的は、表の行として方向を持つエッジを取得することです。だから、これは作品に思える:
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人にしたいのですが?