列表函数

更新时间:2025-01-09 07:26:44

本文介绍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