如何在Neo4j中通过Cypher查询匹配重复关系模式获取节点下游数据
Neo4j特定模式路径遍历Cypher查询方案
查询需求梳理
你需要匹配的下游遍历路径规则为:从F1节点出发,沿Function节点 -[:provides]-> Information节点 -[:requires]-> Function节点的模式循环遍历,获取路径上所有关联数据。
可用Cypher查询
1. 返回完整遍历路径(包含所有中间节点和关系)
MATCH path = (startF:Function {name: 'F1'})-[:provides]->(:Information)(<-[:requires]-(:Function)-[:provides]->(:Information))*0.. RETURN nodes(path) AS 路径节点列表, relationships(path) AS 路径关系列表
2. 仅返回所有下游不重复的节点
MATCH (startF:Function {name: 'F1'})-[:provides]->(:Information)(<-[:requires]-(:Function)-[:provides]->(:Information))*0..(endNode) RETURN DISTINCT endNode AS 下游节点
语法说明
(路径模式)*0..为Cypher可变长度路径匹配语法,这里*0..表示模式重复0次到无限次,可覆盖F1直接输出的I1、到最深层的I3所有节点,你也可以自定义上下限,比如*1..3表示最多遍历3层下游- 示例中用
name: 'F1'匹配起始节点,你可以根据你的实际节点唯一标识属性替换(如id: 'F1'等)
内容的提问来源于stack exchange,提问作者ABCDEF
相关产品推荐
相关产品推荐

