RETURN

简介

RETURN 子句定义要包含在查询结果中的模式(节点、关系和/或属性)的各个部分。

示例图

以下图用于下面的示例

graph return clause

要重新创建该图,请对空的 Neo4j 数据库运行以下查询。

CREATE
  (keanu:Person {name: 'Keanu Reeves', bornIn: 'Beirut', nationality: 'Canadian'}),
  (taiChi:Movie {title: 'Man of Tai Chi', released: 2013}),
  (keanu)-[:ACTED_IN]->(taiChi),
  (keanu)-[:DIRECTED]->(taiChi)

返回节点

要返回节点,请在 RETURN 子句中列出它

查询
MATCH (p:Person {name: 'Keanu Reeves'})
RETURN p
表 1. 结果
p

{"bornIn":"Beirut","nationality":"Canadian","name":"Keanu Reeves"}

行数:1

返回关系

要返回关系类型,请在 RETURN 子句中列出它

查询
MATCH (p:Person {name: 'Keanu Reeves'})-[r:ACTED_IN]->(m)
RETURN type(r)
表 2. 结果
type(r)

"ACTED_IN"

行数:1

返回属性

要返回特定属性,请使用点分隔符

查询
MATCH (p:Person {name: 'Keanu Reeves'})
RETURN p.bornIn
表 3. 结果
p.bornIn

"Beirut"

行数:1

要仅返回属性的值,请不要返回完整的节点/关系。这将提高性能。

返回所有元素

要返回查询中找到的所有节点、关系和路径,请使用 * 符号

查询
MATCH p = (keanu:Person {name: 'Keanu Reeves'})-[r]->(m)
RETURN *

这将返回两个节点,以及它们之间两个可能的路径。

表 4. 结果
keanu m p r

{"bornIn":"Beirut","nationality":"Canadian","name":"Keanu Reeves"}

{"title":"Man of Tai Chi","released":2013}

(:Person {bornIn: "Beirut",nationality: "Canadian",name: "Keanu Reeves"})-[:ACTED_IN]→(:Movie {title: "Man of Tai Chi",released: 2013})

{:ACTED_IN}

{"bornIn":"Beirut","nationality":"Canadian","name":"Keanu Reeves"}

{"title":"Man of Tai Chi","released":2013}

(:Person {bornIn: "Beirut",nationality: "Canadian",name: "Keanu Reeves"})-[:DIRECTED]→(:Movie {title: "Man of Tai Chi",released: 2013})

{:DIRECTED}

行数:1

包含不常见字符的变量

要引入一个由英文字母表中不包含的字符组成的变量,请使用 ` 将变量括起来

查询
MATCH (`/uncommon variable\`)
WHERE `/uncommon variable\`.name = 'Keanu Reeves'
RETURN `/uncommon variable\`.bornIn

返回 name 属性设置为 'Keanu Reeves' 的节点的 bornIn 属性

表 5. 结果
/uncommon variable\.bornIn

"Beirut"

行数:1

列别名

可以使用 AS 运算符重命名返回列的名称

查询
MATCH (p:Person {name: 'Keanu Reeves'})
RETURN p.nationality AS citizenship

返回 'Keanu Reeves'nationality 属性,但列重命名为 citizenship

表 6. 结果
citizenship

"Canadian"

行数:1

可选属性

如果属性的存在未知,它仍然可以包含在 RETURN 子句中。如果属性不存在,则将被视为 null

查询
MATCH (n)
RETURN n.bornIn

此示例返回具有该属性的节点的 bornIn 属性,以及缺少该属性的节点的 null

表 7. 结果
n.bornIn

"Beirut"

<null>

行数:2

其他表达式

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

查询
MATCH (m:Movie {title: 'Man of Tai Chi'})
RETURN m.released < 2012, "I'm a literal",[p=(m)--() | p] AS `(m)--()`

返回谓词、文字和带有模式表达式参数的函数调用

表 8. 结果
m.released < 2012 "I’m a literal" (m)--()

false

"I’m a literal"

[(:Movie {title: "Man of Tai Chi",released: 2013})←[:DIRECTED]-(:Person {bornIn: "Beirut",nationality: "Canadian",name: "Keanu Reeves"}), (:Movie {title: "Man of Tai Chi",released: 2013})←[:ACTED_IN]-(:Person {bornIn: "Beirut",nationality: "Canadian",name: "Keanu Reeves"})]

行数:1

唯一结果

DISTINCT 仅检索已选择输出的列的唯一行。

查询
MATCH (p:Person {name: 'Keanu Reeves'})-->(m)
RETURN DISTINCT m

查询返回 Movie 节点 'Man of Tai Chi',但只返回一次(如果没有 DISTINCT 运算符,它将返回两次,因为有两个关系从 'Keanu Reeves' 指向它)

表 9. 结果
m

{"title":"Man of Tai Chi","released":2013}+

行数:1