MATCH

MATCH子句式是GQL最基础的子句,几乎所有查询都是通过 MATCH展开。

MATCH子句用于指定在图中搜索的匹配模式,用来匹配满足一定条件的点或者路径。

基本用法

点查询

查询所有点

MATCH (n)
RETURN n

查询特定标签的点

MATCH (n:Person)
RETURN n

通过属性匹配点

MATCH (n:Person{name:'Michael Redgrave'})
RETURN n.birthyear

返回结果

[{"n.birthyear":1908}]

通过过滤条件匹配点

MATCH (n:Person WHERE n.birthyear > 1910)
RETURN n.name LIMIT 2

返回结果

[{"n.name":"Christopher Nolan"},{"n.name":"Corin Redgrave"}]

边查询

出边匹配

MATCH (n:Person WHERE n.birthyear = 1970)-[e]->(m)
RETURN n.name, label(e), m.name

返回结果

[{"label(e)":"BORN_IN","m.name":"London","n.name":"Christopher Nolan"},{"label(e)":"DIRECTED","m.name":null,"n.name":"Christopher Nolan"}]

入边匹配

MATCH (n:Person WHERE n.birthyear = 1939)<-[e]-(m)
RETURN n.name, label(e), m.name

返回结果

[{"label(e)":"HAS_CHILD","m.name":"Rachel Kempson","n.name":"Corin Redgrave"},{"label(e)":"HAS_CHILD","m.name":"Michael Redgrave","n.name":"Corin Redgrave"}]

带过滤条件的边匹配

MATCH (n:Person)-[e:BORN_IN WHERE e.weight > 20]->(m)
RETURN n.name, e.weight, m.name

返回结果

[{"e.weight":20.549999237060547,"m.name":"New York","n.name":"John Williams"},{"e.weight":20.6200008392334,"m.name":"New York","n.name":"Lindsay Lohan"}]

路径匹配

不定跳查询

MATCH (n:Person)-[e]->{2,3}(m:Person)
RETURN m.name LIMIT 2

返回结果

[{"m.name":"Liam Neeson"},{"m.name":"Natasha Richardson"}]