本文介绍AGE的列表函数。
数据准备
SELECT create_graph('graph_name');
SELECT * from cypher('graph_name', $$
CREATE (A:Person {name: 'Alice', age: 38, eyes: 'brown'}),
(B:Person {name: 'Bob', age: 25, eyes: 'blue'}),
(C:Person {name: 'Charlie', age: 53, eyes: 'green'}),
(D:Person {name: 'Daniel', age: 54, eyes: 'brown'}),
(E:Person {name: 'Eskil', age: 41, eyes: 'blue', array: ['one', 'two', 'three']}),
(A)-[:KNOWS]->(B),
(A)-[:KNOWS]->(C),
(B)-[:KNOWS]->(D),
(C)-[:KNOWS]->(D),
(B)-[:KNOWS]->(E)
$$) as (result agtype);
keys
keys()
返回一个包含顶点、边或映射的所有属性名称的字符串表示形式的列表。
语法
keys(expression)
返回值
一个包含字符串类型元素的Agtype列表。
参数
名称 | 描述 |
名称 | 描述 |
expression | 一个顶点、边或映射的表达式。 |
注意事项
keys(null)
返回null
。
示例
SELECT * from cypher('graph_name', $$
MATCH (a)
WHERE a.name = 'Alice'
RETURN keys(a)
$$) as (result agtype);
返回一个包含与a
绑定的顶点上所有属性名称的列表。
result
-------------------------
["age", "eyes", "name"]
(1 row)
range
range()
返回一个包含从起始值start
到结束值end
之间所有整数值的列表,其中任意两个连续值之间的差值step
是固定的,即生成一个等差数列。这个范围是包含性的,因此等差数列将始终包含起始值start
,并且根据起始值start
、步长step
和结束值end
的具体值,可能也会包含结束值end
。
语法
range(start, end [, step])
返回值
一个包含整数元素的Agtype列表。
参数
名称 | 描述 |
名称 | 描述 |
start | 一个整数值的表达式。 |
end | 一个整数值的表达式。 |
step | 定义任意两个连续值之间差值的数值表达式,默认为1。 |
示例
SELECT *
FROM cypher('graph_name', $$
RETURN range(0, 10), range(2, 18, 3)
$$) as (no_step agtype, step agtype);
返回两个在给定范围内的数字列表。
no_step | step
------------------------------------+-----------------------
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | [2, 5, 8, 11, 14, 17]
(1 row)
labels
labels
返回一个包含节点所有标签字符串表示的列表。
语法
labels(vertex)
返回值
一个包含字符串类型元素的Agtype列表。
参数
名称 | 描述 |
名称 | 描述 |
vertex | 单个顶点的表达式。 |
注意事项
labels(null)
返回null
。
示例
SELECT *
FROM cypher('graph_name', $$
MATCH (a)
WHERE a.name = 'Alice'
RETURN labels(a)
$$) as (labels agtype);
返回与a
绑定的顶点的节点的所有标签的列表。
labels
------------
["Person"]
(1 row)
nodes
nodes
返回一个包含路径中所有节点的列表。
语法
nodes(path)
返回值
一个包含顶点实体的Agtype列表。
参数
名称 | 描述 |
名称 | 描述 |
path | Agtype路径的表达式。 |
注意事项
nodes(null)
返回null
。
示例
SELECT *
FROM cypher('graph_name', $$
MATCH p = (a)-[]->(b)-[]->(c)
WHERE a.name = 'Alice' AND c.name = 'Eskil'
RETURN nodes(p)
$$) as (vertices agtype);
返回路径p
中所有顶点的列表。
vertices
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------
[{"id": 844424930131969, "label": "Person", "properties": {"age": 38, "eyes": "brown", "name": "Alice"}}::vertex, {"id": 844424930131970, "label": "Person", "properties": {"age": 25, "eyes": "blue", "name": "Bob"}}::vertex,
{"id": 844424930131973, "label": "Person", "properties": {"age": 41, "eyes": "blue", "name": "Eskil", "array": ["one", "two", "three"]}}::vertex]
(1 row)
relationships
relationships()
返回路径中包含的所有关系的列表。
语法
relationships(path)
返回值
一个包含边实体的Agtype列表。
参数
名称 | 描述 |
名称 | 描述 |
path | Agtype路径的表达式。 |
注意事项
relationships(null)
返回null
。
示例
SELECT *
FROM cypher('graph_name', $$
MATCH p = (a)-[]->(b)-[]->(c)
WHERE a.name = 'Alice' AND c.name = 'Eskil'
RETURN relationships(p)
$$) as (edges agtype);
返回路径p
中所有边的列表。
edges
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------
[{"id": 1125899906842640, "label": "KNOWS", "end_id": 844424930131989, "start_id": 844424930131988, "properties": {}}::edge, {"id": 1125899906842644, "label": "KNOWS", "end_id": 844424930131992, "start_id": 844424930131989,
"properties": {}}::edge]
(1 row)
toBooleanList
toBooleanList()
将一个值列表转换为布尔值列表。如果任何值无法转换为布尔值,则在返回的列表中它们将为null
。
语法
toBooleanList(list)
返回值
一个包含转换后元素的Agtype列表,根据输入值,转换后的值可能是布尔值或null
。
注意事项
列表中的任何
null
元素都将保留。列表中的任何布尔值都将保留。
如果列表为
null
,则返回null
。如果输入不是一个列表,则返回错误。
示例
SELECT * FROM cypher('expr', $$
RETURN toBooleanList(["true", "false", "true"])
$$) AS (toBooleanList agtype);
返回结果如下:
tobooleanlist
---------------------
[true, false, true]
(1 row)
- 本页导读 (1)
- 数据准备
- keys
- range
- labels
- nodes
- relationships
- toBooleanList