2017-07-03 34 views
3

我想指定一個節點並返回節點所有的關係,以及連接其餘節點的其他所有關係。Neo4j返回某個子圖中存在的所有節點和關係

我想回到什麼的一個例子是:

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

假設指定的節點是Eric,他們查詢應返回所有直接連接到他不屬於關係沿着關係連接到Eric但連接到他的一些連接節點。

回答

3

我有模擬的情景與這組數據:

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) 

下面的查詢應努力實現自己的目標:

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

至於結果:

╒════════════════════╤════════════╤══════════════════╕ 
│"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操作,而不是在結果投影之後執行:'... WITH DISTINCT rs RETURN ... ' – InverseFalcon

相關問題