neo4j 查 match

在这里插入图片描述

节点获取

1.获得所有的节点

MATCH (n)
RETURN n

注意这里的n是一个变量名,代表了我们所取的所有节点
2.获得相应标签节点

MATCH (movie:Movie)
RETURN movie.title

获得所有电影的名称

3.获得关系节点

MATCH (director { name: 'Oliver Stone' })--(movie)
RETURN movie.title

获得该导演所有的电影

4.获得标签节点

MATCH (:Person { name: 'Oliver Stone' })--(movie:Movie)
RETURN movie.title

关系获取

1.外向关系

MATCH (:Person { name: 'Oliver Stone' })-->(movie)
RETURN movie.title

2.已知节点,获得类型

MATCH (:Person { name: 'Oliver Stone' })-[r]->(movie)
RETURN type(r)

3.已知一种关系类型,获得节点

MATCH (wallstreet:Movie { title: 'Wall Street' })<-[:ACTED_IN]-(actor)
RETURN actor.name

获得所有华尔街演员

4.已知多种关系类型,获得节点

MATCH (wallstreet { title: 'Wall Street' })<-[:ACTED_IN|:DIRECTED]-(person)
RETURN person.name

获得华尔街导演和演员

5.已知节点和关系类型,获取关系属性

MATCH (wallstreet { title: 'Wall Street' })<-[r:ACTED_IN]-(actor)
RETURN r.role

深度关系

在这里插入图片描述

1.Relationship types with uncommon characters

MATCH (n { name: 'Rob Reiner' })-[r:`TYPE
WITH SPACE`]->()
RETURN type(r)

2.多层关系

MATCH (charlie { name: 'Charlie Sheen' })-[:ACTED_IN]->(movie)<-[:DIRECTED]-(director)
RETURN movie.title, director.name

获得查理主演的电影和导演

3.已知关系长度

MATCH (martin { name: 'Charlie Sheen' })-[:ACTED_IN*1..3]-(movie:Movie)
RETURN movie.title

获得所有电影和查理相差1到3个跳点.

4.节点之间相差不确定长度

MATCH p =(actor { name: 'Charlie Sheen' })-[:ACTED_IN*2]-(co_actor)
RETURN relationships(p)

5.节点相差不确定长度且包含属性

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)

6.0长度路径

MATCH (wallstreet:Movie { title: 'Wall Street' })-[*0..1]-(x)
RETURN x

7.返回过滤路径

MATCH p =(michael { name: 'Michael Douglas' })-->()
RETURN p

8.Matching on a bound relationship

MATCH (a)-[r]-(b)
WHERE id(r)= 0
RETURN a,b

最短路径

1.最短路径方法
使用shortestPath方法获得两个节点的最短路径

MATCH (martin:Person { name: 'Martin Sheen' }),(oliver:Person { name: 'Oliver Stone' }), p = shortestPath((martin)-[*..15]-(oliver))
RETURN p

2.最短路径判定

MATCH (charlie:Person { name: 'Charlie Sheen' }),(martin:Person { name: 'Martin Sheen' }), p = shortestPath((charlie)-[*]-(martin))
WHERE NONE (r IN relationships(p) WHERE type(r)= 'FATHER')
RETURN p

3.获得所有最短路径

MATCH (martin:Person { name: 'Martin Sheen' }),(michael:Person { name: 'Michael Douglas' }), p = allShortestPaths((martin)-[*]-(michael))
RETURN p

通过id获取节点和关系

1.通过id获得节点

MATCH (n)
WHERE id(n)= 0
RETURN n

2.通过id获得关系

MATCH ()-[r]->()
WHERE id(r)= 0
RETURN r

3.多个id获取节点

MATCH (n)
WHERE id(n) IN [0, 3, 5]
RETURN n

参考文献:
https://neo4j.com/docs/developer-manual/3.4/cypher/clauses/match/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值