neo4j 将路径化为子图

6qqygrtg  于 2022-10-01  发布在  其他
关注(0)|答案(1)|浏览(172)

假设我有下面的图表

Z
  /          
 /             
A -> B -> C -> D
           /
  -> X -> Y

我计算路径

match p=((:A)-[*]->[:D])
return p

这将返回三条路径(行):AZD、ABCD和AXYD

但我想返回一个包含A和D之间所有路径的子图,因此结果应该是一个子图。我的理解是,子图返回的唯一格式是节点和关系。所以如下所示的查询

// query logic
return nodes, relationships

我应该在查询逻辑中写什么?注:

1.这不是整个图,我的图中还有其他子图,所以返回整个图不起作用。
1.A和D在这里只是节点类型,会有许多类型A和类型D节点,每个A和D节点对之间会有一条或多条路径。

kknvjkwl

kknvjkwl1#

检索唯一节点和关系集的一种方法是使用apoC

MATCH p=((:A)-[*]->(:D))    
RETURN apoc.coll.toSet(
            apoc.coll.flatten(
                 COLLECT(nodes(p))
            )
       ) AS nodes,
       apoc.coll.toSet(
            apoc.coll.flatten(
                 COLLECT(relationships(p))
            )
       ) AS relationships

相关问题