简化密码,匹配所有节点和两种节点类型之间的关系
Simplifying cypher, match all nodes and relationships between two node types
有没有办法进一步简化这个查询?
我想从 kingdom
到所有 species
,有与物种节点相关的节点。该图像显示了此查询的结果,但是有什么方法可以匹配 kingdom
节点以及物种节点之前的所有节点和关系。如果你喜欢:王国和物种之间的所有nodes/relationships。
永远不会有一个节点不附属于王国或物种对象(这是一个分类层次结构)。
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
您可以在查询中使用可变长度关系。 *6 意味着您可以从 Kingdom 获取节点最多六跳(或关系),直到到达 Species。然后从这个路径,return 你找到的所有节点。
MATCH p=(:Kingdom)-[:RELTYPE*6]-(:Species)
RETURN nodes(p)
无需指定关系类型,但最好设置一个上限(即使上限很高)。例如:
MATCH p=(:Kingdom)-[*..15]->(:Species)
RETURN nodes(p)
有没有办法进一步简化这个查询?
我想从 kingdom
到所有 species
,有与物种节点相关的节点。该图像显示了此查询的结果,但是有什么方法可以匹配 kingdom
节点以及物种节点之前的所有节点和关系。如果你喜欢:王国和物种之间的所有nodes/relationships。
永远不会有一个节点不附属于王国或物种对象(这是一个分类层次结构)。
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
您可以在查询中使用可变长度关系。 *6 意味着您可以从 Kingdom 获取节点最多六跳(或关系),直到到达 Species。然后从这个路径,return 你找到的所有节点。
MATCH p=(:Kingdom)-[:RELTYPE*6]-(:Species)
RETURN nodes(p)
无需指定关系类型,但最好设置一个上限(即使上限很高)。例如:
MATCH p=(:Kingdom)-[*..15]->(:Species)
RETURN nodes(p)