RETURN

更新时间:2025-01-09 07:25:47

在查询的RETURN部分,您定义了需要输出的模式部分。输出可以包括Agtype值、节点、关系或属性。

返回节点

需要返回一个节点,在RETURN语句中列出它。

示例

SELECT *
FROM cypher('graph_name', $$
    MATCH (n {name: 'B'})
    RETURN n
$$) as (n agtype);

将返回节点:

                         n 
---------------------------------------------------
{id: 0; label: '' properties: {name: 'B'}}::vertex
(1 row)

返回边

返回节点n的边,只需将其包含在RETURN列表中。

示例

SELECT *
FROM cypher('graph_name', $$
    MATCH (n)-[r:KNOWS]->()
    WHERE n.name = 'A'
    RETURN r
$$) as (r agtype);

将返回边:

                                r 
-------------------------------------------------------------------
{id: 2; startid: 0; endid: 1; label: 'KNOWS' properties: {}}::edge
(1 row)

返回属性

返回一个属性,需要使用点分隔符。

示例

SELECT *
FROM cypher('graph_name', $$
    MATCH (n {name: 'A'})
    RETURN n.name
$$) as (name agtype);

将返回属性name的值:

 name 
------
'A'
(1 row)

返回所有元素

需要返回查询中找到的所有顶点、边和路径时,可以使用*符号。

示例

SELECT *
FROM cypher('graph_name', $$
    MATCH (a {name: 'A'})-[r]->(b)
    RETURN *
$$) as (a agtype, b agtype, r agtype);

将返回两个顶点和查询中使用的边:

                                                      a                                                |                                                               b                                                              |                                        r                                         
-------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------
 {"id": 281474976710659, "label": "", "properties": {"age": 55, "name": "A", "happy": "Yes!"}}::vertex | {"id": 1125899906842625, "label": "BLOCKS", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {}}::edge  | {"id": 281474976710660, "label": "", "properties": {"name": "B"}}::vertex
 {"id": 281474976710659, "label": "", "properties": {"age": 55, "name": "A", "happy": "Yes!"}}::vertex | {"id": 1407374883553281, "label": "KNOWS", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {}}::edge   | {"id": 281474976710660, "label": "", "properties": {"name": "B"}}::vertex
(2 rows)

包含不常见字符的变量

为了引入一个由非英文字母组成的占位符,您可以使用反引号`来包围变量。

示例

SELECT *
FROM cypher('graph_name', $$
    MATCH (`This isn\'t a common variable`)
    WHERE `This isn\'t a common variable`.name = 'A'
    RETURN `This isn\'t a common variable`.happy
$$) as (happy agtype);

将返回名为 "A" 的节点:

 happy  
--------
 "Yes!"
(1 row)

字段别名

如果字段的名称与使用的表达式不同,可以通过更改列定义列表中的名称来重命名它。

示例

SELECT *
FROM cypher('graph_name', $$
    MATCH (n {name: 'A'})
    RETURN n.name
$$) as (objects_name agtype);

将返回节点的name属性,但重命名了字段。

 objects_name 
--------------
 "A"
(1 row)

可选属性

如果一个属性可能存在也可能不存在,那么如果它缺失的话,将被视为NULL。

示例

SELECT *
FROM cypher('graph_name', $$
    MATCH (n)
    RETURN n.age
$$) as (age agtype);

将返回该属性如果存在的话,或者如果属性不存在则返回NULL。

 age 
-----
 55
 NULL
(2 rows)

其他表达式

任何表达式都可以作为返回项—字符函数、谓词、属性、函数等。

示例

SELECT *
FROM cypher('graph_name', $$
    MATCH (a)
    RETURN a.age > 30, 'I''m a literal', id(a)
$$) as (older_than_30 agtype, literal agtype, id agtype);

将返回节点:

        older_than_30       |         literal             |           id                                       
----------------------------+-----------------------------+-------------------------
          true              |      'I'm a literal'        |            1 
(1 row)

唯一结果

DISTINCT根据所选输出字段检索唯一的记录。

示例

SELECT *
FROM cypher('graph_name', $$
MATCH (a {name: 'A'})-[]->(b)
RETURN DISTINCT b
$$) as (b agtype);

将返回节点:

                           b                                         
----------------------------------------------------------
{id: 1; label: ‘’ properties: {name: ‘B’}}::vertex
(1 row)
  • 本页导读 (1)
  • 返回节点
  • 返回边
  • 返回属性
  • 返回所有元素
  • 包含不常见字符的变量
  • 字段别名
  • 可选属性
  • 其他表达式
  • 唯一结果

点击开启售前

在线咨询服务