首页 > 解决方案 > 使用 neo4j 查找图中的所有路径

问题描述

我有一个 DAG,我想使用 neo4j 找到其中的所有路径。为此,我使用以下查询:

MATCH (n)-[:REL]->(leaf)
RETURN n,leaf ;

但是,此查询仅返回给我的边缘。但是我希望我的输出具有以下形式:

  a->b->c->d->e->f->g->h->i
  a->b1->c1->d1->e1->f1->g1->h1->i1

有什么方法可以用来获得这个输出吗?

标签: neo4jcypher

解决方案


我想你会想看看变长模式匹配。您需要添加限制,以便您的起始节点是根节点,结束节点是叶节点,否则您将获得图中的每个子路径。

此外,你真的应该使用标签。举例来说,我将在我的 Cypher 代码段中添加 :Node:

MATCH path = (root:Node)-[:REL*]->(leaf)
WHERE NOT ()-[:REL]->(root) AND NOT (leaf)-[:REL]->()
RETURN path

推荐阅读