查询所有节点
查询语句
match (n)
return n
没有指出是某种节点则查询所有类型的节点
返回值
n
Node[0]{name:"Charlie Sheen"}
Node[1]{name:"Martin Sheen"}
Node[2]{name:"Michael Douglas"}
Node[3]{name:"Oliver Stone"}
Node[4]{name:"Rob Reiner"}
Node[5]{title:"Wall Street"}
Node[6]{title:"The American President"}
查询某一个标签的节点
查询语句
match (movie:Movie)-----(1)
return movie.title -----(2)
- 将查询的类型限制在Movie
- 只返回类型的title属性
- movie是别名,类似sql中的as之后的别名
返回值
movie.title
"Wall Street"
"The American President"
相关节点
查询语句
MATCH (director { name: 'Oliver Stone' })--(movie) -----(1)
RETURN movie.title----(2)
- 需要匹配的条件:两个节点有关系、关系没有方向、其中一个节点的name属性值为’Oliver Stone’
- 没有带上":类型",就代表是所有节点
- “–”表示没有方向
- 如果满足上述匹配,但是没有对应的属性值,就显示为空
- 比如匹配到一个类型为人的节点,但是这个节点没有title属性,那么这一列返回的值就为null
返回值
movie.title
"Wall Street"
在匹配的情况下加上标签约束
查询语句
MATCH (:Person { name: 'Oliver Stone' })--(movie:Movie)
RETURN movie.title
- 匹配条件:标签为Person的节点和标签为Movie的节点有关联、Person节点的名称为“Oliver Stone”
返回值
movie.title
"Wall Street"
查询外部关系
查询语句
MATCH (:Person { name: 'Oliver Stone' })-->(movie)
RETURN movie.title
返回值
movie.title
"Wall Street"
查询关系
查询语句
MATCH (:Person { name: 'Oliver Stone' })-[r]->(movie)
RETURN type(r)
查询关系类型
返回值
type(r)
"DIRECTED"
查询特定关系类型
查询语句
MATCH (wallstreet:Movie { title: 'Wall Street' })<-[:ACTED_IN]-(actor)----(1)
RETURN actor.name
- :ACTED_IN表示关系为“ACTED_IN”类型
返回值
actor.name
"Michael Douglas"
"Martin Sheen"
"Charlie Sheen"
同时匹配多个关系
查询条件
MATCH (wallstreet { title: 'Wall Street' })<-[:ACTED_IN|:DIRECTED]-(person)---(1)
RETURN person.name
- 匹配关系为“ACTED_IN”或"DIRECTED"类型
返回值
person.name
"Oliver Stone"
"Michael Douglas"
"Martin Sheen"
"Charlie Sheen"
查询关系的属性
查询条件
MATCH (wallstreet { title: 'Wall Street' })<-[r:ACTED_IN]-(actor)
RETURN r.role
返回值
r.role
"Gordon Gekko"
"Carl Fox"
"Bud Fox"
在Charlie Sheen和Rob Reiner中添加关系
使用“`”来避免类型中的空值
查询条件
MATCH (n { name: 'Rob Reiner' })-[r:`TYPE WITH SPACE`]->()
RETURN type(r)
返回值
type(r)
"TYPE WITH SPACE"
匹配多个关系
查询条件
MATCH (charlie { name: 'Charlie Sheen' })-[:ACTED_IN]->(movie)<-[:DIRECTED]-(director)
RETURN movie.title, director.name
返回值
movie.title director.name
"Wall Street" "Oliver Stone"
可变长度的关系
查询条件
MATCH (martin { name: 'Charlie Sheen' })-[:ACTED_IN*1..3]-(movie:Movie)
RETURN movie.title
查询距离为1~3的和Charlie有关的电影
返回值
movie.title
"Wall Street"
"The American President"
"The American President"
查询连接的关系列表
查询条件
MATCH p =(actor { name: 'Charlie Sheen' })-[:ACTED_IN*2]-(co_actor)
RETURN relationships(p)
当两个节点之间的连接长度可变时,可以使用以下语法返回组成连接的关系列表
返回值
relationships(p)
[:ACTED_IN[0]{role:"Bud Fox"},:ACTED_IN[1]{role:"Carl Fox"}]
[:ACTED_IN[0]{role:"Bud Fox"},:ACTED_IN[2]{role:"Gordon Gekko"}]
根据id获取节点
查询条件
MATCH (n)
WHERE id(n)= 0
RETURN n
返回值
n
Node[0]{name:"Charlie Sheen"}
根据id获取关系
查询条件
MATCH ()-[r]->()
WHERE id(r)= 0
RETURN r
返回值
r
:ACTED_IN[0]{role:"Bud Fox"}
多个节点的id查询
查询条件
MATCH (n)
WHERE id(n) IN [0, 3, 5]
RETURN n
返回值
n
Node[0]{name:"Charlie Sheen"}
Node[3]{name:"Oliver Stone"}
Node[5]{title:"Wall Street"}