简化密码,匹配所有节点和两种节点类型之间的关系

问题描述

有没有办法进一步简化这个查询? 我想从 kingdom 到所有 species,有与物种节点相关的节点。图像显示了此查询的结果,但有没有办法匹配 kingdom 节点以及直到物种节点的所有节点和关系。如果您喜欢:王国和物种之间的所有节点/关系。

永远不会有不附加到王国或物种对象的节点(这是一个分类层次结构)。 RELTYPE 可能会更改为更有意义的内容

MATCH (k:Kingdom)-
[:RELTYPE]->(p:Phylum)-
[:RELTYPE]-(c:Class)-
[:RELTYPE]-(o:Order)-
[:RELTYPE]-(f:Family)-
[:RELTYPE]-(g:Genus)-
[:RELTYPE]-(s:Species)
RETURN k,p,c,o,f,g,s

enter image description here

解决方法

您可以在查询中使用可变长度关系。 *6 表示您可以从 Kingdom 获取最多六跳(或关系)的节点,直到您到达 Species。然后从这个路径,返回你找到的所有节点。

MATCH p=(:Kingdom)-[:RELTYPE*6]-(:Species)
RETURN nodes(p)
,

无需指定关系类型,但最好设置一个上限(即使它很高)。例如:

MATCH p=(:Kingdom)-[*..15]->(:Species)
RETURN nodes(p)