Neo4j获得1度节点之间的边缘

时间:2017-05-03 07:40:43

标签: graph neo4j cypher graph-databases

假设我具有定义为A-> B,A-> D,C-> A,B-> C,B-> D的图形关系。我需要在Neo4j中获得以下子图 -

  1. 获取节点的所有1度连接(indegree或outdegree),即对于节点A,它将是B,C,D
  2. 获取这些第一度节点之间的所有边缘。由于B,C,D是1度连接,边缘将是B-> C,B-> D
  3. 对于第一部分,我有以下查询 -

    MATCH (s:Node)->(d:Node) 
    WHERE s.name = 'A' OR d.name = 'A'
    

    我无法在同一查询中获取第二部分数据。我是否需要遍历所有节点?

1 个答案:

答案 0 :(得分:3)

这是一个简单的模式,表示您从节点开始路径,然后转到它旁边的节点,然后其中一个可以返回到起始节点:

MATCH (A:Node {name:'A'}) WITH A
MATCH (A)--(FD1:Node)-[r]-(FD2:Node)--(A) 
  WHERE ID(FD1) > ID(FD2)
RETURN FD1, r, FD2

P.S。请记住,您无法指定关系的方向。