概述
SET
语句可以更新、增加或删除点或边的属性值。使用前,需先使用MATCH
语句获取待修改的点或边。
需注意,点或边的标签无法修改。
<set statement> ::= "SET" <set item list>
<set item list> ::= <set item> [ { "," <set item> }... ]
<set item> ::= <set property item> | <set all properties item>
<set property item> ::=
<binding variable reference> "." <property name> "=" <value expression>
<set all properties item> ::=
<binding variable reference> "=" "{" [ <property key value pair list> ] "}"
详情
- 系统属性(
_id
,_uuid
,_from
,_to
,_from_uuid
和_to_uuid
)无法修改。
示例图集
以下示例以该图集为初始图集:
在空图集中运行以下语句创建示例图集:
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更新属性
本条查询根据createdOn
属性值,为标签为Follows
的边指定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} |
如果提供的值与属性类型不同且无法转换成正确类型,则将使用该属性类型的默认值。