假设存在如下关系:
CREATE(P1{id:1,name:'P1'}), (P2{id:2,name:'P2'}), (P3{id:3,name:'P3'}), (P4{id:4,name:'P4'}), (P5{id:5,name:'P5'}),(P1)-[:FRIENDS]->(P2),(P1)-[:FRIENDS]->(P3),(P2)-[:FRIENDS]->(P4),(P3)-[:FRIENDS]->(P5)
查询从P1开始的第二层关系:
MATCH (P1 {name : "P1"})-[r:FRIENDS*2]->(FF) return P1,FF,r;
查询从P1开始的第一、二层关系:
MATCH(P1{name :"P1"})-[r:FRIENDS*1..2]->(FF) return P1,FF,r;
查询结果如果想包含P1则可以使用[r:FRIENDS*0..2]
查询从P1到P5的路径长度:
MATCH PP1=(P1 {name : "P1"})-[r:FRIENDS*1..2]->(FF{name : "P5"}) return length(PP1);
或MATCH (P1 {name : "P1"})-[r:FRIENDS*1..2]->(FF{name : "P5"}) return length(r);
判断两个用户的关系是否直接连得通:
MATCH (P1 {name : "P1"}),(P2 {name : "P2"}) MATCH (P1)-[r:FRIENDS]->(P2) return P1,P2;
如果有返回结果就连得通,否则连不通。
获得两个节点间的最短路径:
MATCH (A {name : "P1"}),(B {name : "P5"}) MATCH p=shortestPath((A)-[*..15]->(B)) return A,B,p;
其中[*..15]的15为最大的关系长度,如果想找出所有最短路径则使用allShortestPaths
网友评论