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/

Neo4jMATCH语句是用于在Neo4j数据库询数据的一种查询语句MATCH语句可以用来匹配中的节点和关系,并根据指定的条件返回满足条件的结果。 在MATCH语句中,可以指定节点之间的关系、节点的属性、节点的标签等条件来进行询。可以使用箭头符号(->、<-、-)来表示节点之间的关系,还可以使用圆括号和冒号来指定节点的属性和标签。 例如,可以使用MATCH语句询节点之间的关系,并返回满足条件的结果。可以使用WHERE子句来指定询条件。例如,MATCH (a)-->(b)表示匹配所有具有指定关系的节点,并返回满足条件的结果。 另外,MATCH语句还可以根据节点或关系的id进行询。可以使用id()函数来获取节点或关系的id,并使用WHERE子句来指定询条件。例如,MATCH (n) WHERE id(n)=0 RETURN n表示根据节点的id询节点,并返回满足条件的结果。 总之,Neo4jMATCH语句是用于匹配中的节点和关系,并根据指定的条件返回满足条件的结果的查询语句。可以根据节点之间的关系、节点的属性、节点的标签等条件来进行询,并可以根据节点或关系的id进行询。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Neo4j之三_复杂MATCH语句](https://blog.csdn.net/IMchg/article/details/108311630)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [neo4j语法-match](https://blog.csdn.net/qq_17616169/article/details/115390320)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值