如何编写Cypher语句从指定节点筛选符合关系属性的所有路径?
对应的Cypher语句编写方案
核心需求拆解
要找的是从id为10的节点出发,所有全程只用type='type1'的RELATED_TO关系走到底的路径——意思是路径里每一步的关系都得是type1,直到再也找不到下一个type1的关系为止。
最终可用的Cypher语句
MATCH path = (start {id: 10})-[:RELATED_TO {type: 'type1'}*]->(end) WHERE NOT (end)-[:RELATED_TO {type: 'type1'}]->() RETURN path
语句说明
MATCH path = (start {id: 10})-[:RELATED_TO {type: 'type1'}*]->(end):匹配从id=10的节点出发,通过任意多段(*表示不限步数)type='type1'的RELATED_TO关系连到终点节点的完整路径。WHERE NOT (end)-[:RELATED_TO {type: 'type1'}]->():筛掉那些还能继续走type1关系的路径,只保留走不动的最终路径——比如节点2后面的关系是type2,不符合要求,所以路径停在2;节点1后面没有type1的关系,所以路径到1为止。RETURN path:直接返回所有符合要求的路径。
这样就能得到你要的两条路径:10 -> 5 -> 3 -> 1和10 -> 5 -> 2。
内容的提问来源于stack exchange,提问作者DragonProd
相关产品推荐
相关产品推荐

