首页 > 解决方案 > Neo4j 密码选择查询在树状结构图中

问题描述

我是 neo4j 和 cypher 的新手,并尝试构建以下查询:从图片中选择由棕色圈出的节点和关系(A、B、C、D、E、F、G、H 和关系)因为如果我遇到一个蓝色节点,我应该将此节点添加到结果中但省略其子节点(相关节点),因此要求是树状结构。在这种情况下,关系方向并不重要。

你能帮助我吗?

图1

图2

编辑:并添加了第二个示例。同样,所需的结果是棕色线包围的节点。

标签: neo4jcypher

解决方案


MATCH p=(c:LabelSystem)-[r*]->(d) 
WHERE d:LabelLeaf OR d:LabelElement 
WITH COLLECT(DISTINCT d) as labelElements,COLLECT(DISTINCT c) as labelSystem , c
MATCH (ls:LabelSystem)-[]-(le:LabelElement) 
WHERE le IN labelElements AND ls <> c
WITH COLLECT(DISTINCT ls) as  childLabelSystems,labelSystem,labelElements,c.uniqueProperty as uniqueIdentifier
WITH labelElements+childLabelSystems+labelSystem as allNodes,uniqueIdentifier
RETURN uniqueIdentifier,allNodes 

如果您使用颜色作为节点内的属性,您可以相应地调整 WHERE


推荐阅读