RETURN
RETURN
可以引导子句或语句:
RETURN
子句可以用于nGQL中的openCypher方式语句中,例如MATCH
或UNWIND
。RETURN
可以单独使用,输出表达式的结果。
本文操作仅适用于nGQL中的openCypher方式。关于原生nGQL如何定义输出结果,请参见YIELD。
RETURN
不支持如下openCypher功能:
设置一个模式,并返回该模式匹配的所有元素。例如:
MATCH (v:player) \
RETURN (v)-[e]->(v2);
历史版本兼容性
在nGQL 1.x中,
RETURN
适用于原生nGQL,语法为RETURN <var_ref> IF <var_ref> IS NOT NULL
。在nGQL 2.0中,
RETURN
不适用于原生nGQL。
Map顺序说明
RETURN
返回Map时,Key的顺序是未定义的。
nebula> RETURN {age: 32, name: "Marco Belinelli"};
+------------------------------------+
| {age:32,name:"Marco Belinelli"} |
+------------------------------------+
| {age: 32, name: "Marco Belinelli"} |
+------------------------------------+
nebula> RETURN {zage: 32, name: "Marco Belinelli"};
+-------------------------------------+
| {zage:32,name:"Marco Belinelli"} |
+-------------------------------------+
| {name: "Marco Belinelli", zage: 32} |
+-------------------------------------+
返回边
nebula> MATCH (v:player)-[e]->() \
RETURN e;
| e |
+------------------------------------------------------------------------------+
| [:follow "player104"->"player100" @0 {degree: 55}] |
| [:follow "player104"->"player101" @0 {degree: 50}] |
| [:follow "player104"->"player105" @0 {degree: 60}] |
| [:serve "player104"->"team200" @0 {end_year: 2009, start_year: 2007}] |
+------------------------------------------------------------------------------+
...
返回属性
使用语法{<vertex_name>|<edge_name>}.<property>
返回点或边的属性。
nebula> MATCH (v:player) \
RETURN v.name, v.age \
LIMIT 3;
+-------------------+-------+
| v.name | v.age |
+-------------------+-------+
| "Rajon Rondo" | 33 |
| "Rudy Gay" | 32 |
| "Dejounte Murray" | 29 |
+-------------------+-------+
重命名字段
使用语法AS <alias>
重命名输出结果中的字段。
nebula> MATCH (v:player{name:"Tim Duncan"})-[:serve]->(v2) \
RETURN v2.name AS Team;
+---------+
| Team |
+---------+
| "Spurs" |
+---------+
nebula> RETURN "Amber" AS Name;
+---------+
| Name |
+---------+
| "Amber" |
+---------+
返回不存在的属性
如果匹配的结果中,某个属性不存在,会返回NULL
。
nebula> MATCH (v:player{name:"Tim Duncan"})-[e]->(v2) \
+-----------------+----------+--------------+
| v2.name | type(e) | v2.age |
+-----------------+----------+--------------+
| "Manu Ginobili" | "follow" | 41 |
| "Spurs" | "serve" | UNKNOWN_PROP |
+-----------------+----------+--------------+
RETURN
语句可以返回字面量、函数或谓词等表达式的结果。
返回唯一字段
使用DISTINCT
可以删除结果集中的重复字段。
# 未使用DISTINCT。
nebula> MATCH (v:player{name:"Tony Parker"})--(v2:player) \
RETURN v2.name, v2.age;
+---------------------+--------+
| v2.name | v2.age |
+---------------------+--------+
| "Tim Duncan" | 42 |
| "LaMarcus Aldridge" | 33 |
| "Marco Belinelli" | 32 |
| "Boris Diaw" | 36 |
| "Dejounte Murray" | 29 |
| "Tim Duncan" | 42 |
| "LaMarcus Aldridge" | 33 |
| "Manu Ginobili" | 41 |
+---------------------+--------+
# 使用DISTINCT。
nebula> MATCH (v:player{name:"Tony Parker"})--(v2:player) \
RETURN DISTINCT v2.name, v2.age;
+---------------------+--------+
| v2.name | v2.age |
+---------------------+--------+
| "Tim Duncan" | 42 |
| "LaMarcus Aldridge" | 33 |
| "Marco Belinelli" | 32 |
| "Boris Diaw" | 36 |
| "Dejounte Murray" | 29 |
+---------------------+--------+