match


//清空数据
match (n) detach delete n

(一)查询节点
1.查询所有节点
//查询数据库中的所有节点
match(n)return n

2.查询带有某个标签的所有节点
//查询数据库中的所有电影
match(movie:Movie)return movie.title

3.查询关联节点 --
//查询Oliver Stone导演的所有电影
match(director{name:"Oliver Stone"})--(movie)return movie.title

4.匹配标签
//查询Oliver Stone相连的带有movie标签的所有节点
match(Oliver:Person{name:"Oliver Stone"})--(movie:Movie)return movie.title

(二)查询关系
1. 通过-->或者<--
//查询Oliver Stone外向连接的所有节点
match(Oliver:Person{name:"Oliver Stone"})-->(movie:Movie)return movie.title

2.有向关系和变量
//查询Oliver外向关系的类型
match(Oliver:Person{name:"Oliver Stone"})-[r]->(:Movie)return type(r)

3.匹配关系类型
//返回Wall Street中的所有演员
match(p)-[:ACTED_IN]->(movie:Movie{title:"Wall Street"})return p.name

4.匹配多种关系类型
//返回Wall Street中关系为ACTED_IN|或者DIRECTED的所有节点
match(p)-[:ACTED_IN|:DIRECTED]->(movie:Movie{title:"Wall Street"})return p.name

5. 匹配关系类型和使用关系变量
//返回Wall Street所有演员的角色
match(p)-[r:ACTED_IN]->(movie:Movie{title:"Wall Street"})return r.roles

(三)关系的深度
1. 带有特殊字符的关系类型
create(Rob)-[:`TYPE WITH SPACE`]->(Charlie)
match(Rob:Person {name:'Rob Reiner'})-[r:`TYPE WITH SPACE`]->()return type(r)


2.多个关系 ()-()
//查询Charlie演的电影和该电影的导演
match(Charlie:Person {name:'Charlie Sheen'})-[:ACTED_IN]->(movie)<-[:DIRECTED]-(director)return movie.title,director.name


3.可变长关系
//查询Charlie关系为1-3的所有电影
match(Charlie:Person {name:'Charlie Sheen'})-[:ACTED_IN*1..3]->(movie)return movie.title
4. 变长关系的关系变量


//当两个节点之间的长度是变长,返回一个关系列表
match(actor{name:"Charlie Sheen"})-[r:ACTED_IN*2]-(coactor) return r


5.变长路径的属性匹配
//查询Charlie Sheen和Martin Sheen之间满足block属性为false的所有关系
match(charlie:Person{name:"Charlie Sheen"}),(martin:Person{name:"Martin Sheen"})
create(charlie)-[:X{blocked:FALSE}]->(:UNBLOCKED)<-[:X{blocked:FALSE}]-(martin)
create(charlie)-[:X{blocked:TRUE}]->(:BLOCKED)<-[:X{blocked:FALSE}]-(martin)
MATCH P=(charlir:Person)-[*{blocked:FALSE}]-(martin:Person)WHERE charlir.name="Charlie Sheen"and martin.name="Martin Sheen" return P


6.零长路径:
//查询电影本身以及一跳关系的演员和导演
match(wallstreet:Movie{title:"Wall Street"})-[*0..1]-(x)return x


7.命名路径
//如果想返回或者对路径进行过滤,可以将路径赋值给一个变量
match p=(michael{name:"Michael Douglas"})-->() return p


8.匹配一簇关系

(四)最短路径
1.单条最短路径shortesrPath
//在搜索最短路径时,可以使用关系类型/最大跳数,方向等约束
match(charlie:Person{name:"Charlie Sheen"}),(olive:Person{name:"Olive Stone"}),
p=shortestPath((martin)-[*1..15]-(olive))return p


2.带有断言的最短路径
//查询Charlie Sheen和Marin Sheen之间的最短路径,不考虑父子关系
match(charlie:Person{name:"Charlie Sheen"}),(martin:Person{name:"Marin Sheen"}),
p=shortestPath((martin)-[*]-(martin))
where NONE (r in rels(p) where type(r)="FATHER") return p


3.所有最短路径
match(martin:Person{name:"Martin Sheen"}),(michael:Person{name:"Michael Douglas"}),
p=allshortestPaths((charlie)-[*]-(michael)) return p


(五)通过ID查询节点或关系
1.通过id查询节点
//节点id为0
match(n) where id(n)=0 return n


2.通过id查询关系
//关系id为0,不推荐
match()-[r]-() where id(r)=0 return r


3.通过id查询多个节点
match(n) where id(n) in [0,3,5] return n

 



转载于:https://www.cnblogs.com/hapyygril/p/10227141.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值