nebulagraph图数据库中的Match查询汇总
-
MATCH <pattern> [<clause_1>] RETURN <output> [<clause_2>];模式 示例 说明 匹配点 (v)用户可以在一对括号中使用自定义变量来表示模式中的点。例如 (v)。匹配 Tag MATCH (v:player) RETURN v用户可以在点的右侧用 :<tag_name>表示模式中的 Tag。匹配多 Tag MATCH (v:player:team) RETURN v用户可以用英文冒号(:)匹配多 Tag 的点。 匹配点的属性 MATCH (v:player{name:"Tim Duncan"}) RETURN vMATCH (v) WITH v, properties(v) as props, keys(properties(v)) as kk WHERE [i in kk where props[i] == "Tim Duncan"] RETURN v用户可以在 Tag 的右侧用 {<prop_name>: <prop_value>}表示模式中点的属性;或者不指定 Tag 直接匹配点的属性。匹配单点 ID MATCH (v) WHERE id(v) == 'player101' RETURN v用户可以使用点 ID 去匹配点。 id()函数可以检索点的 ID。匹配多点 ID MATCH (v:player { name: 'Tim Duncan' })--(v2) WHERE id(v2) IN ["player101", "player102"] RETURN v2要匹配多个点的 ID,可以用 WHERE id(v) IN [vid_list]。匹配连接的点 MATCH (v:player{name:"Tim Duncan"})--(v2) RETURN v2.player.name AS Name用户可以使用 --符号表示两个方向的边,并匹配这些边连接的点。用户可以在--符号上增加<或>符号指定边的方向。匹配路径 MATCH p=(v:player{name:"Tim Duncan"})-->(v2) RETURN p连接起来的点和边构成了路径。用户可以使用自定义变量命名路径。 匹配边 MATCH (v:player{name:"Tim Duncan"})-[e]-(v2) RETURN eMATCH ()<-[e]-() RETURN e除了用 --、-->、<--表示未命名的边之外,用户还可以在方括号中使用自定义变量命名边。例如-[e]-。匹配 Edge type MATCH ()-[e:follow]->() RETURN e和点一样,用户可以用 :<edge_type>表示模式中的 Edge type,例如-[e:follow]-。匹配边的属性 MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN eMATCH ()-[e]->() WITH e, properties(e) as props, keys(properties(e)) as kk WHERE [i in kk where props[i] == 90] RETURN e用户可以用 {<prop_name>: <prop_value>}表示模式中 Edge type 的属性,例如[e:follow{likeness:95}];或者不指定 Edge type 直接匹配边的属性。匹配多个 Edge type MATCH (v:player{name:"Tim Duncan"})-[e:follow | :serve]->(v2) RETURN e使用 |可以匹配多个 Edge type,例如[e:follow | :serve]。第一个 Edge type 前的英文冒号(:)不可省略,后续 Edge type 前的英文冒号可以省略,例如[e:follow | serve]。匹配多条边 MATCH (v:player{name:"Tim Duncan"})-[]->(v2)<-[e:serve]-(v3) RETURN v2, v3用户可以扩展模式,匹配路径中的多条边。 匹配定长路径 MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) RETURN DISTINCT v2 AS Friends用户可以在模式中使用 :<edge_type>*<hop>匹配定长路径。hop必须是一个非负整数。e的数据类型是列表。匹配变长路径 MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*1..3]->(v2) RETURN v2 AS FriendsminHop:可选项。表示路径的最小长度。minHop必须是一个非负整数,默认值为 1。maxHop:可选项。表示路径的最大长度。maxHop必须是一个非负整数,默认为无穷大。e的数据类型是列表。匹配多个 Edge type 的变长路径 MATCH p=(v:player{name:"Tim Duncan"})-[e:follow | serve*2]->(v2) RETURN DISTINCT v2用户可以在变长或定长模式中指定多个 Edge type。 hop、minHop和maxHop对所有 Edge type 都生效。e的数据类型是列表。检索点或边的信息 MATCH (v:player{name:"Tim Duncan"}) RETURN vMATCH (v:player{name:"Tim Duncan"})-[e]->(v2) RETURN e使用 RETURN {<vertex_name> | <edge_name>}检索点或边的所有信息。检索点 ID MATCH (v:player{name:"Tim Duncan"}) RETURN id(v)使用 id()函数检索点 ID。检索 Tag MATCH (v:player{name:"Tim Duncan"}) RETURN labels(v)使用 labels()函数检索点上的 Tag 列表。
检索列表labels(v)中的第 N 个元素,可以使用labels(v)[n-1]。检索点或边的单个属性 MATCH (v:player{name:"Tim Duncan"}) RETURN v.player.age使用 RETURN {<vertex_name> | <edge_name>}.<property>检索单个属性。
使用AS设置属性的别名。检索点或边的所有属性 MATCH p=(v:player{name:"Tim Duncan"})-[]->(v2) RETURN properties(v2)使用 properties()函数检索点或边的所有属性。检索 Edge type MATCH p=(v:player{name:"Tim Duncan"})-[e]->() RETURN DISTINCT type(e)使用 type()函数检索匹配的 Edge type。检索路径 MATCH p=(v:player{name:"Tim Duncan"})-[*3]->() RETURN p使用 RETURN <path_name>检索匹配路径的所有信息。检索路径中的点 MATCH p=(v:player{name:"Tim Duncan"})-[]->(v2) RETURN nodes(p)使用 nodes()函数检索路径中的所有点。检索路径中的边 MATCH p=(v:player{name:"Tim Duncan"})-[]->(v2) RETURN relationships(p)使用 relationships()函数检索路径中的所有边。检索路径长度 MATCH p=(v:player{name:"Tim Duncan"})-[*..2]->(v2) RETURN p AS Paths, length(p) AS Length使用 length()函数检索路径的长度。
- OPTIONAL MATCH
模式 示例 说明 作为 MATCH语句的可选项去匹配图数据库中的模式MATCH (m)-[]->(n) WHERE id(m)=="player100" OPTIONAL MATCH (n)-[]->(l) RETURN id(m),id(n),id(l)如果图数据库中没有对应的模式,对应的列返回 NULL。
郭慕荣博客园

浙公网安备 33010602011771号