首页 > 解决方案 > Neo4J 按关系匹配子节点

问题描述

我有一个图表,其中包含由其他部件组成的机械部件,我想展示一个大部件的整体组成。我图中的所有相关节点都有“结构”标签,当一个部分由其他部分组成时,存在“PartProperty”关系。所以我需要一个查询,其起点由“Vehicle”或“CombusionEngine”等名称定义,然后它应该从该节点找到所有传出的“PartProperty”关系。有些子部分也有子部分,有些则没有。

下面是一个组成的例子:

当我只匹配关系时,我只得到第一个子元素,当我匹配第二个级别时,没有子结构的元素将消失。

标签: neo4jcypher

解决方案


下面是一个示例查询,它使用可变长度关系模式返回 指定节点的所有部分(和子部分)的路径:start

MATCH path=(start:Structure)-[:PartProperty*]->()
WHERE start.name = "CombusionEngine"
RETURN path

这是一个仅返回所有不同部分(和子部分)的变体:

MATCH (start:Structure)-[:PartProperty*]->(part)
WHERE start.name = "CombusionEngine"
RETURN DISTINCT part

推荐阅读