我有一张Neo图表,如果我选择某些关系,那就是一棵树。
我想从任意节点开始,找到根目录下的所有节点。我想把两者之间的所有节点都归还给我,包括两端。在示例的情况下,我按顺序需要节点“a,t,c,d,e,ROOT”。
想象一下树有一个看起来像
的分支a-[]->t-[]->c-[]->d-[]->e-[]->ROOT
如果我关心的关系是x,y和z,并且根节点被称为ROOT,并且起始节点具有某个id(唯一值),我得到这样的结果:
(a {id:an_id})-[*:x|y|z]->(root:ROOT) return a, root
这使我得以结束,但我如何获得它们之间的节点?
修改
节点(...)http://neo4j.com/docs/stable/query-functions-collection.html#functions-nodes
答案 0 :(得分:4)
你几乎是对的:
您必须将表达式分配给路径,.e.g。 p
。
MATCH p= (a:Leaf {id:an_id})-[:x|:y|:z*]->(root:ROOT)
RETURN p,a,root, nodes(path);
使用shortestPath
可能更有效MATCH p= shortestPath((a:Leaf {id:an_id})-[:x|:y|:z*]->(root:ROOT))
RETURN p,a,root, nodes(p);