2017-07-03 7 views
3

ノードを指定して、ノードが持つすべてのリレーションシップと、残りのノードを結ぶ他のリレーションシップを返します。Neo4jは、特定のサブグラフに存在するすべてのノードとリレーションシップを返します

私は返すしたいものの例は次のとおりです。

Eric, PARENT_OF, Mia 
Eric, PARENT_OF, Peter 
Mia, SIBLING_OF, Peter 
Mia, SPOUSE_OF, Mark 
... 

は、指定されたノードが Ericであると仮定すると、彼らは直接ではない関係と一緒に彼に接続されているすべての関係を返す必要があります問い合わせます Ericに接続されていますが、接続されているノードのいくつかに接続されています。

答えて

3

私は、このデータセットを使用してシナリオをシミュレートしている:その結果

MATCH (root:Person {name:'Eric'})-[r*1..3]->(a:Person) 
UNWIND r AS rs 
RETURN DISTINCT startNode(rs).name, type(rs), endNode(rs).name 

CREATE (eric:Person {name:'Eric'}) 
CREATE (mia:Person {name:'Mia'}) 
CREATE (peter:Person {name:'Peter'}) 
CREATE (mark:Person {name:'Mark'}) 
CREATE (eric)-[:PARENT_OF]->(mia) 
CREATE (eric)-[:PARENT_OF]->(peter) 
CREATE (mia)-[:SIBLING_OF]->(peter) 
CREATE (mia)-[:SPOUSE_OF]->(mark) 

以下のクエリでは、あなたの目標を達成するために動作するはず

グッド
╒════════════════════╤════════════╤══════════════════╕ 
│"startNode(rs).name"│"type(rs)" │"endNode(rs).name"│ 
╞════════════════════╪════════════╪══════════════════╡ 
│"Eric"    │"PARENT_OF" │"peter"   │ 
├────────────────────┼────────────┼──────────────────┤ 
│"Eric"    │"PARENT_OF" │"Mia"    │ 
├────────────────────┼────────────┼──────────────────┤ 
│"Mia"    │"SIBLING_OF"│"peter"   │ 
├────────────────────┼────────────┼──────────────────┤ 
│"Mia"    │"SPOUSE_OF" │"Mark"   │ 
└────────────────────┴────────────┴──────────────────┘ 
+0

、が私は結果の投影の後ではなく、DISTINCT操作を実行することをお勧めします: '... DISTINCT rs RETURN ... WITH DISTINCT ' – InverseFalcon

関連する問題