2016-10-03 97 views
0

给定一个表示潜在选择的Neo4J图(绿色节点表示下图中的潜在选择)只有某些选择是有效的 - 用有效的结果表示具有所有叶节点在选择路径是橙色。Neo4J/Cypher匹配选择的子树以识别有效结果

我想从所有叶节点(到任意深度)为橙色的黄色起始节点标识路径(一系列选择(和关联节点))。该图形是指示节点是蓝色还是绿色保存为节点属性。

Example Graph

蓝色和橙色的节点可以选择之间被共享(即橙色节点可以不必具有度= 1)

鉴于在图中,我想下面返回图...

黄色 - > A - >电子 A - “G

黄色 - >ç - > MS

这是我先前的问题更复杂的延伸...... Neo4J - count outermost nodes

回答

0

您可以使用谓词ALL寻找合适的节点:

MATCH (Y {color: 'Yellow'}) WITH Y 
MATCH (G {color: 'Green'})-->(O) 
WITH Y, 
    G, 
    ALL(color IN COLLECT(O.color) WHERE color = 'Orange') AS valid 
    WHERE valid = TRUE 
MATCH path = (Y)-[*]->(G) 
RETURN path