以下是match的常用语法
查询节点
//检索节点 (查询 person节点下name字段为Jack Nicholson的数据 )
match(person{name:"Jack Nicholson"}) return person
//用where条件查询
match(p:Person) where p.born=1996 and p.name='Jonathan Lipnicki' return p
使用limit
//查询Person节点 返回10条数据(只返回Person的name字段)
match(p:Person) return p.name limit 10
使用order by
//根据生日降序查询,只返回前10条
match(p:Person) return p order by p.born desc limit 10
查询关系
//查找 Tom Cruise 参演了那些电影
match(p:Person{name:'Tom Cruise'})-[:ACTED_IN]->(m:Movie) return p,m
//查看那个Person 指导了title='Sleepless in Seattle' 的电影
match(m{title:'Sleepless in Seattle'})<-[:DIRECTED]-(p) return m,p
//查询和Robin Williams共同参演过电影的人(首先匹配节点{name:'Robin Williams'}的人,匹配此节点通过[:ACTED_IN]关系指向的节点m,并且同时
匹配某个节点p2也通过[:ACTED_IN]关系指向的节点m,然后返回匹配节点m的p2对象)
match(p:Person{name:'Robin Williams'})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(p2) return p2
//查询和电影The Birdcage 有关系(所有关系)的人,并返回人名,关系名称,还有关系对象(包含关系属性等)
MATCH(p:Person)-[relatedTo]->(m:Movie {title:"The Birdcage"}) return p.name,type(relatedTo),relatedTo
//查找演员Clint Eastwood 和 演员Hugo Weaving的最短关系路径,其中 shortestPath 是一个内置方法
MATCH p = shortestPath(
(p1:Person {name: "Clint Eastwood"})-[*]-(p2:Person {name: "Hugo Weaving"})
)
RETURN p
//查询Adam 的朋友的朋友
MATCH(user:User{ name:"Adam"})-[rl:FRIEND]-()-[r2:FRIEND]-(friend_of_a_friend)
RETURN friend_of_a_friend.name AS fofName
查询外向关系(:Person {name: "Cuba Gooding Jr."}):查找 标签为 Person 且 属性 name 为 "Cuba Gooding Jr." 的节点。
-->:表示 有向关系(从左到右),关系类型未指定(匹配任意类型)。
(movie):匹配与 Person 节点通过关系连接的 目标节点,并将其命名为 movie(变量名),并返回movie
match(:Person{name:"Cuba Gooding Jr."})-->(moive) return moive
查询关联关系(不带方向的)(:Person {name: "Cuba Gooding Jr."}):查找 标签为 Person 且 属性 name 为 "Cuba Gooding Jr." 的节点。
--:表示 无向关系(不区分方向),关系类型未指定(匹配任意类型)。
(movie):匹配与 Person 节点通过关系连接的 任意节点,并将其命名为 movie。
match(:Person{name:"Cuba Gooding Jr."})--(moive) return moive
查询某个节点其关系数量大于N的节点
//查询Person节点,其关系数量大于3的所有数据
MATCH (u:Person)
WHERE size(()-[]-(u)) > 3
return u