在 Neo4j 中递归匹配子树
Matching subtree recursively in Neo4j
我正在使用 Neo4j,我认为自己是个新手,我真的不明白如何 select 我的图的子树。我找到了使用 shortestPath
和 allShortestPaths
的解决方案,但这与 select 通过变量及其所有子树对整个子树进行 select 并不是一回事。
我想做的是match MATCH (n {name: "Sovrum"})-[r:CHILDOF]->(child) return n, child
但这只给我直接相关的节点。
相反,我想 select 整个子树。
有什么好的方法可以做到这一点,还是我遗漏了一些重要的东西?
使用可变长度路径非常简单,您从根开始并告诉 Cypher 一直匹配 CHILD_OF 直到不再继续。
请确保在您的查询中使用标签,以允许 Neo4j(带有索引)快速找到您的起点。
您还可以将匹配的模式分配给路径 return 该路径
MATCH path = (n:Node {name: "Sovrum"})-[:CHILDOF*]->(child)
RETURN path
我正在使用 Neo4j,我认为自己是个新手,我真的不明白如何 select 我的图的子树。我找到了使用 shortestPath
和 allShortestPaths
的解决方案,但这与 select 通过变量及其所有子树对整个子树进行 select 并不是一回事。
我想做的是match MATCH (n {name: "Sovrum"})-[r:CHILDOF]->(child) return n, child
但这只给我直接相关的节点。
相反,我想 select 整个子树。
有什么好的方法可以做到这一点,还是我遗漏了一些重要的东西?
使用可变长度路径非常简单,您从根开始并告诉 Cypher 一直匹配 CHILD_OF 直到不再继续。
请确保在您的查询中使用标签,以允许 Neo4j(带有索引)快速找到您的起点。
您还可以将匹配的模式分配给路径 return 该路径
MATCH path = (n:Node {name: "Sovrum"})-[:CHILDOF*]->(child)
RETURN path