获取所有子节点递归



现在,要从 Neo4J 返回子图,我使用

Match(n{id:"<uuid>"}) OPTIONAL MATCH (n)-[*..25]->(m) RETURN DISTINCT *

这对于深度互连的图形来说效率非常低(因为没有 RETURN DISTINCT,我得到 100k 的结果与可怜的 100 个结果相提并论。

如何在不使用APOC的情况下高效地请求节点的所有子节点?(又名,在匹配中使 DISTINCT 冗余而不是必需;又名,在匹配过程中只访问每个节点一次?

从 Neo4j 3.2.x 开始,(start)-[*..25]->(children)的行为符合预期。

在此之前,您需要使用 APOC 扩展函数 apoc.path.spanningTree