关于 YMatrix
部署数据库
使用数据库
管理集群
最佳实践
高级功能
高级查询
联邦查询
Grafana 监控
备份恢复
灾难恢复
图数据库
管理手册
性能调优
故障诊断
工具指南
系统配置参数
SQL 参考
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(expression)
返回值:
包含字符串 agtype 元素的 agtype 列表
参数:
| 名称 | 描述 |
|---|---|
| path | 返回顶点、边或映射的表达式。 |
注意事项:
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() 返回一个列表,包含由起始值 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(vertex)
返回值:
包含字符串元素的 agtype 列表
参数:
| 名称 | 描述 |
|---|---|
| vertex | 返回单个顶点的表达式。 |
注意事项:
labels(null) 返回 null。查询:
SELECT *
FROM cypher('graph_name', $$
MATCH (a)
WHERE a.name = 'Alice'
RETURN labels(a)
$$) as (edges agtype);
返回一个列表,包含绑定到 a 的节点的所有标签。
结果:
edges
------------
["Person"]
(1 row)
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 中的所有顶点。
结果:
verticesrs
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[{"id": 11540474045136897, "label": "Person", "properties": {"age": 38, "eyes": "brown", "name": "Alice"}}::vertex, {"id": 11540474045136898, "label": "Person", "properties": {"age": 25, "eyes": "blue", "name": "Bob"}
}::vertex, {"id": 11540474045136901, "label": "Person", "properties": {"age": 41, "eyes": "blue", "name": "Eskil", "array": ["one", "two", "three"]}}::vertex]
(1 row)
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": 17169973579350017, "label": "KNOWS", "end_id": 11540474045136898, "start_id": 11540474045136897, "properties": {}}::edge, {"id": 17169973579350021, "label": "KNOWS", "end_id": 11540474045136901, "start_id": 11
540474045136898, "properties": {}}::edge]
(1 row)
toBooleanList() 将值列表转换为布尔值列表并返回。如果任何值无法转换为布尔值,则在返回的列表中将为 null。
语法:toBooleanList(list)
返回值:
包含转换后元素的 agtype 列表;根据输入值,转换后的值为布尔值或 null。
注意事项:
查询:
SELECT * FROM cypher('graph_name', $$RETURN toBooleanList(["true", "false", "true"])
$$) AS (toBooleanList agtype);
结果:
tobooleanlist
---------------------
[true, false, true]
(1 row)