关于 YMatrix
部署数据库
使用数据库
管理集群
最佳实践
高级功能
高级查询
联邦查询
Grafana 监控
备份恢复
灾难恢复
图数据库
管理手册
性能调优
故障诊断
工具指南
系统配置参数
SQL 参考
SET 子句用于更新顶点和边上的标签和属性。
注意!
在 YMatrix AGE 中,由于底层存储是 MPP,因此需要将数据进行 motion。此时就会划分为多个 slice。因为 YMatrix 只能有一个 write slice,此时就可能引发报错:
ERROR: AssignTransactionId() called by Segment Reader process。因此,尽量在一个 cypher 中,尽可能少的同时使用多个写算子。
不跟随其他子句的 SET 子句是终端子句。当 Cypher 查询以终端子句结尾时,cypher 函数调用不会返回任何结果。但是,cypher 函数调用仍然需要列定义列表。当 cypher 以终端节点结尾时,在列定义列表中定义一个值即可:该变量不会返回任何数据。
要在节点或关系上设置属性,使用 SET。
查询
SELECT *
FROM cypher('graph_name', $$
MATCH (v {name: 'Andres'})
SET v.surname = 'Taylor'
$$) as (v agtype);
查询返回新更改的节点。
结果
| v |
|---|
| (0 rows) |
使用以下查询创建单个顶点:
查询
SELECT *
FROM cypher('graph_name', $$
MATCH (v {name: 'Andres'})
SET v.surname = 'Taylor'
RETURN v
$$) as (v agtype);
查询返回新更改的顶点。
结果
| v |
|---|
| {id: 3; label: 'Person'; properties: {surname:"Taylor", name:"Andres", age:36, hungry:true}}::vertex |
| (1 row) |
通常可以使用 REMOVE 来移除属性,但用户也可以使用 SET 命令来移除属性。例如当属性来自参数时。
查询
SELECT *
FROM cypher('graph_name', $$
MATCH (v {name: 'Andres'})
SET v.name = NULL
RETURN v
$$) as (v agtype);
查询返回该节点,name 属性现已被移除。
结果
| v |
|---|
| {id: 3; label: 'Person'; properties: {surname:"Taylor", age:36, hungry:true}}::vertex |
| (1 row) |
如果你想在一个查询中设置多个属性,可以用逗号分隔。
查询
SELECT *
FROM cypher('graph_name', $$
MATCH (v {name: 'Andres'})
SET v.position = 'Developer', v.surname = 'Taylor'
RETURN v
$$) as (v agtype);
结果
| v |
|---|
| {"id": 281474976710661, "label": "", "properties": {"name": "Andres", "surname": "Taylor", "position": "Developer"}}::vertex |
| (1 row) |
可以使用多个SET子句来设置多个属性。
尽可能的使用同一个SET子句来更新多个属性,而不是使用多个SET子句更新多个属性。
查询
SELECT *
FROM cypher('graph_name', $$
MATCH (v {name: 'Andres'})
SET v.position = 'Developer'
SET v.surname = 'Taylor'
RETURN v
$$) as (v agtype);
结果
| v |
|---|
| {"id": 281474976710661, "label": "", "properties": {"name": "Andres", "surname": "Taylor", "position": "Developer"}}::vertex |
| (1 row) |