2016-09-30 73 views
1

Graph I am trying to parseNeo4j的Cypher支架查询来获取所有子节点,直到到达节点与具体的关系

我想创造一种与所谓的“分析单位”蓝色节点开始查询。查询将获得所有子节点,除非它运行到通过直接连接到不同分析单元来“覆盖”关系的节点。任何帮助,将不胜感激!

+1

您是否可以在此扩展?正如在给定您链接的图表一样,引导我们完成您期望正确查询的操作以及预期的输出。 – InverseFalcon

+0

另外:你似乎有关系类型有相反的方向性,但始终存在于相同的节点之间。这种冗余在neo4j中不是必需的,因为您可以轻松地在任一方向导航关系。 – cybersam

+0

@InverseFalcon当然,我们可以说我对“美国银行”的起始节点提出质疑......其中一个蓝色节点......我想让所有连接到它的所有东西都以红色装箱。这个想法是,它下面的所有东西都会“继承”“分析的一部分”关系,除非它运行到明确定义与其他地方关系的节点上。我不确定也许最好的做法是为每个节点提供明确的关系。 – patrickb19

回答

1

此查询是否适合您?

它应该返回每个Blue节点(其具有任何Red节点的路径)和它的“子节点”(沿着每个这些路径的),忽略路径在其中的任何子节点(第一个除外)具有传入ANALYTICALLY_COMPOSED关系:

MATCH (a:Blue)-[:ANALYTICALLY_COMPOSED]->(b) 
MATCH p=(b)-[rels*]-(:Red) 
WITH a, NODES(p) AS subnodes 
WHERE NONE(n IN subnodes[1..] WHERE()-[:ANALYTICALLY_COMPOSED]->(n)) 
RETURN a, subnodes; 
+0

是的,做了伎俩!非常感谢! ...只需过滤到“a.name =”美国银行“到红色的地方就显示出来了,因为它来自另一条路径。 – patrickb19

相关问题