Neo4J / Cypher匹配选择子树,以确定有效结果

时间:2016-10-03 08:56:55

标签: neo4j cypher

给出代表潜在选择的Neo4J图(绿色节点代表下图中的潜在选择)只有某些选择是有效的 - 表示选择路径中所有叶节点都是橙色的有效结果。

我想从黄色起始节点识别路径(一系列选择(和相关节点)),其中所有叶节点(到任意深度)都是橙色。图表是定向的,节点是蓝色还是绿色是保存为节点属性。

Example Graph

蓝色和橙色节点可以在选项之间共享(即橙色节点可能不一定具有度= 1)

鉴于图中的图表,我希望以下内容返回...

  

黄色 - > A - > Ë             A - > ģ

     

黄色 - > C - > M

这是我之前问题的一个更复杂的扩展...... Neo4J - count outermost nodes

1 个答案:

答案 0 :(得分: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