Neo4j返回特定子图中存在的所有节点和关系

3
我希望可以指定一个节点,并返回该节点的所有关系,以及连接其他所有节点的其它关系。
一个需要返回的示例是:
Eric, PARENT_OF, Mia
Eric, PARENT_OF, Peter
Mia, SIBLING_OF, Peter
Mia, SPOUSE_OF, Mark
...

假设指定的节点是Eric,查询应该返回所有直接连接到他的关系以及与Eric没有连接但与他的某些连接节点相连的关系。
1个回答

4
我已使用此数据集模拟了您的情景:
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"            │
└────────────────────┴────────────┴──────────────────┘

很好,虽然我建议在结果投影之前执行DISTINCT操作而不是之后:... WITH DISTINCT rs RETURN ... - InverseFalcon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接