Neo4J高级语法

假设存在如下关系:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,910评论 2 17
  • 上一篇学习的UITableView的创建和基础使用,当然这只是单机而已,下面我们来学习联网,额!貌似学习的有点跳,...
    繁华乱世沧桑了谁的容颜阅读 1,116评论 0 2
  • 为何叫做 shell ? shell prompt(PS1) 与 Carriage Return(CR) 的关系?...
    Zero___阅读 3,192评论 3 49
  • 使用说明 av号和cid号 av号:http://www.jijidown.com/ cid号:http://co...
    爱咪哆阅读 2,904评论 2 2
  • 类别 对于 iOS 开发者来说,对于类别肯定不陌生,在 OC 的API 中有很多的类都有自己的类别,既然如此,那么...
    redye阅读 991评论 0 3