在查询的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)
- 返回节点
- 返回边
- 返回属性
- 返回所有元素
- 包含不常见字符的变量
- 字段别名
- 可选属性
- 其他表达式
- 唯一结果