概述
SET
语句用于更新或删除点、边的属性值。使用前,需先使用MATCH
语句获取待修改的点、边数据。
注意:点、边的Schema(标签)无法修改。它们的系统属性(_id
、_uuid
、_from
、_to
、_from_uuid
和_to_uuid
)也无法修改。
<set statement> ::=
"SET" <set item> [ { "," <set item> }... ]
<set item> ::=
<set single property> | <set all properties>
<set single property> ::=
<graph element variable reference> "." <property name> "=" <value expression>
<set all properties> ::=
<graph element variable reference> "=" <property specification>
详情
- 允许修改单个属性(例如,
SET n.age = 12
将age
值更新为12
,其他属性值不变),或覆盖全部属性(例如,SET n = {age: 12}
将age
值更新为12
,其他属性值被删除)。
示例图

CREATE GRAPH myGraph {
NODE User ({name string, gender string}),
NODE Club (),
EDGE Follows ()-[{createdOn datetime, weight int32}]->(),
EDGE Joins ()-[{memberNo uint32}]->()
} PARTITION BY HASH(Crc32) SHARDS [1]
INSERT (rowlock:User {_id: "U01", name: "rowlock"}),
(brainy:User {_id: "U02", name: "Brainy", gender: "male"}),
(purplechalk:User {_id: "U03", name: "purplechalk", gender: "female"}),
(mochaeach:User {_id: "U04", name: "mochaeach", gender: "female"}),
(c:Club {_id: "C01"}),
(rowlock)-[:Follows {createdOn: "2024-1-5"}]->(brainy),
(purplechalk)-[:Follows {createdOn: "2024-2-1"}]->(brainy),
(mochaeach)-[:Follows {createdOn: "2024-2-10"}]->(brainy),
(brainy)-[:Joins {memberNo: 1}]->(c)
更新属性
获取点n
并更新其属性gender
,获取边e
并更新其属性createdOn
:
MATCH (n:User {name: 'rowlock'})-[e:Follows]->(:User {name: 'Brainy'})
SET n.gender = 'male', e.createdOn = '2024-1-7'
RETURN n.gender, e.createdOn
结果:
n.gender | e.createdOn |
---|---|
male | 2024-01-07 00:00:00 |
删除属性
获取点n
并删除属性gender
的值:
MATCH (n:User {name: 'mochaeach'})
SET n.gender = null
RETURN n
Result: n
_id | _uuid | schema | values |
---|---|---|---|
U04 | Sys-gen | User | {name: "mochaeach", gender: null} |
覆盖所有属性
获取点n
并覆盖其全部属性,更新属性name
并删除所有其他属性值:
MATCH (n:User {name: 'purplechalk'})
SET n = {name: 'MasterSwift'}
RETURN n
结果:n
_id | _uuid | schema | values |
---|---|---|---|
U03 | Sys-gen | User | {name: "MasterSwift", gender: null} |
删除所有属性
获取点n
并删除其全部属性值:
MATCH (n:User {name: 'rowlock'})
SET n = {}
RETURN n
结果:n
_id | _uuid | schema | values |
---|---|---|---|
U03 | Sys-gen | User | {name: null, gender: null} |
使用CASE更新属性
根据Follows
边的createdOn
属性值,指定其weight
属性值:
MATCH ()-[e:Follows]->()
SET e.weight = CASE
WHEN e.createdOn < '2024-1-31' THEN 10
ELSE 8
END
RETURN e
结果:e
_uuid |
_from |
_to |
_from_uuid |
_to_uuid |
schema |
values |
---|---|---|---|---|---|---|
Sys-gen | U01 | U02 | UUID of U01 | UUID of U02 | Follows | {createdOn: "2024-01-05 00:00:00", weight: 10} |
Sys-gen | U04 | U02 | UUID of U04 | UUID of U02 | Follows | {createdOn: "2024-02-10 00:00:00", weight: 8} |
Sys-gen | U03 | U02 | UUID of U03 | UUID of U02 | Follows | {createdOn: "2024-02-01 00:00:00", weight: 8} |
值类型不符
如果提供的值与属性值类型不同并且无法转换,将使用该属性值类型的默认值作为新值。
将边属性memberNo
(int32
类型)更新为一个字符串:
MATCH ()-[e:Joins]->()
SET e.memberNo = 'm2'
RETURN e
结果:e
_uuid |
_from |
_to |
_from_uuid |
_to_uuid |
schema |
values |
---|---|---|---|---|---|---|
Sys-gen | C01 | U02 | UUID of C01 | UUID of U02 | Follows | {memberNo: 0} |