假設(shè)存在如下關(guān)系:
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開始的第二層關(guān)系:
MATCH (P1 {name : "P1"})-[r:FRIENDS*2]->(FF) return P1,FF,r;
查詢從P1開始的第一、二層關(guān)系:
MATCH(P1{name :"P1"})-[r:FRIENDS*1..2]->(FF) ?return P1,FF,r;
查詢結(jié)果如果想包含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);
判斷兩個用戶的關(guān)系是否直接連得通:
MATCH (P1 {name : "P1"}),(P2 {name : "P2"}) MATCH (P1)-[r:FRIENDS]->(P2) return P1,P2;
如果有返回結(jié)果就連得通,否則連不通。
獲得兩個節(jié)點間的最短路徑:
MATCH (A {name : "P1"}),(B {name : "P5"}) MATCH p=shortestPath((A)-[*..15]->(B)) return A,B,p;
其中[*..15]的15為最大的關(guān)系長度,如果想找出所有最短路徑則使用allShortestPaths