RETURN

    RETURN可以引导子句或语句:

    • RETURN子句可以用于nGQL中的openCypher方式语句中,例如MATCHUNWIND

    • RETURN可以单独使用,输出表达式的结果。

    本文操作仅适用于nGQL中的openCypher方式。关于原生nGQL如何定义输出结果,请参见YIELD

    RETURN不支持如下openCypher功能:

    • 设置一个模式,并返回该模式匹配的所有元素。例如:

      1. MATCH (v:player) \
      2. 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的顺序是未定义的。

    1. nebula> RETURN {age: 32, name: "Marco Belinelli"};
    2. +------------------------------------+
    3. | {age:32,name:"Marco Belinelli"} |
    4. +------------------------------------+
    5. | {age: 32, name: "Marco Belinelli"} |
    6. +------------------------------------+
    7. nebula> RETURN {zage: 32, name: "Marco Belinelli"};
    8. +-------------------------------------+
    9. | {zage:32,name:"Marco Belinelli"} |
    10. +-------------------------------------+
    11. | {name: "Marco Belinelli", zage: 32} |
    12. +-------------------------------------+

    返回边

    1. nebula> MATCH (v:player)-[e]->() \
    2. RETURN e;
    3. | e |
    4. +------------------------------------------------------------------------------+
    5. | [:follow "player104"->"player100" @0 {degree: 55}] |
    6. | [:follow "player104"->"player101" @0 {degree: 50}] |
    7. | [:follow "player104"->"player105" @0 {degree: 60}] |
    8. | [:serve "player104"->"team200" @0 {end_year: 2009, start_year: 2007}] |
    9. +------------------------------------------------------------------------------+
    10. ...

    返回属性

    使用语法{<vertex_name>|<edge_name>}.<property>返回点或边的属性。

    1. nebula> MATCH (v:player) \
    2. RETURN v.name, v.age \
    3. LIMIT 3;
    4. +-------------------+-------+
    5. | v.name | v.age |
    6. +-------------------+-------+
    7. | "Rajon Rondo" | 33 |
    8. | "Rudy Gay" | 32 |
    9. | "Dejounte Murray" | 29 |
    10. +-------------------+-------+

    重命名字段

    使用语法AS <alias>重命名输出结果中的字段。

    1. nebula> MATCH (v:player{name:"Tim Duncan"})-[:serve]->(v2) \
    2. RETURN v2.name AS Team;
    3. +---------+
    4. | Team |
    5. +---------+
    6. | "Spurs" |
    7. +---------+
    8. nebula> RETURN "Amber" AS Name;
    9. +---------+
    10. | Name |
    11. +---------+
    12. | "Amber" |
    13. +---------+

    返回不存在的属性

    如果匹配的结果中,某个属性不存在,会返回NULL

    1. nebula> MATCH (v:player{name:"Tim Duncan"})-[e]->(v2) \
    2. +-----------------+----------+--------------+
    3. | v2.name | type(e) | v2.age |
    4. +-----------------+----------+--------------+
    5. | "Manu Ginobili" | "follow" | 41 |
    6. | "Spurs" | "serve" | UNKNOWN_PROP |
    7. +-----------------+----------+--------------+

    RETURN语句可以返回字面量、函数或谓词等表达式的结果。

    返回唯一字段

    使用DISTINCT可以删除结果集中的重复字段。

    1. # 未使用DISTINCT。
    2. nebula> MATCH (v:player{name:"Tony Parker"})--(v2:player) \
    3. RETURN v2.name, v2.age;
    4. +---------------------+--------+
    5. | v2.name | v2.age |
    6. +---------------------+--------+
    7. | "Tim Duncan" | 42 |
    8. | "LaMarcus Aldridge" | 33 |
    9. | "Marco Belinelli" | 32 |
    10. | "Boris Diaw" | 36 |
    11. | "Dejounte Murray" | 29 |
    12. | "Tim Duncan" | 42 |
    13. | "LaMarcus Aldridge" | 33 |
    14. | "Manu Ginobili" | 41 |
    15. +---------------------+--------+
    16. # 使用DISTINCT。
    17. nebula> MATCH (v:player{name:"Tony Parker"})--(v2:player) \
    18. RETURN DISTINCT v2.name, v2.age;
    19. +---------------------+--------+
    20. | v2.name | v2.age |
    21. +---------------------+--------+
    22. | "Tim Duncan" | 42 |
    23. | "LaMarcus Aldridge" | 33 |
    24. | "Marco Belinelli" | 32 |
    25. | "Boris Diaw" | 36 |
    26. | "Dejounte Murray" | 29 |
    27. +---------------------+--------+