Neo4j中递归匹配子树 我使用NeN4J,我认为自己是一个新手,我真的不知道如何选择我的图表的子树。我已经找到了使用shortestPath和allshortestpath的解决方案,但这与通过变量及其所有子元素选择整个子树并不是一回事

Neo4j中递归匹配子树 我使用NeN4J,我认为自己是一个新手,我真的不知道如何选择我的图表的子树。我已经找到了使用shortestPath和allshortestpath的解决方案,但这与通过变量及其所有子元素选择整个子树并不是一回事,neo4j,cypher,match,subtree,nosql,Neo4j,Cypher,Match,Subtree,Nosql,我想做的是,例如matchmatch(n{name:“Sovrum”})-[r:CHILDOF]->(child)返回n,child,但这只会给我直接相关的节点 相反,我想选择整个子树。 有什么好方法可以做到这一点,还是我遗漏了一些东西如何工作的关键点?使用可变长度路径很容易,你从根开始,告诉Cypher一直匹配CHILD_,直到它不再继续 请确保在查询中使用标签,以允许Neo4j(带索引)快速找到起点 您还可以指定与路径匹配的模式并返回该路径 MATCH path = (n:Node {na

我想做的是,例如match
match(n{name:“Sovrum”})-[r:CHILDOF]->(child)返回n,child
,但这只会给我直接相关的节点

相反,我想选择整个子树。


有什么好方法可以做到这一点,还是我遗漏了一些东西如何工作的关键点?

使用可变长度路径很容易,你从根开始,告诉Cypher一直匹配CHILD_,直到它不再继续

请确保在查询中使用标签,以允许Neo4j(带索引)快速找到起点

您还可以指定与路径匹配的模式并返回该路径

MATCH path = (n:Node {name: "Sovrum"})-[:CHILDOF*]->(child)
RETURN path

好吧,这很有效。但我不太明白星号与关系有什么关系?星号表示可变长度路径,请参见: