概述
SET语句用于更新点、边的标签和属性。使用前,需先使用MATCH语句获取待修改的点、边数据。
注意:
- 在类型图中,点、边的Schema无法修改。
- 点、边的唯一标识符
_id和_uuid无法修改。
类型图
示例图

CREATE GRAPH myGraph {
NODE User ({name STRING, gender STRING}),
NODE Club (),
EDGE Follows ()-[{createdOn DATE}]->(),
EDGE Joins ()-[{memberNo INT32}]->()
}
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: date("2024-01-05")}]->(brainy),
(purplechalk)-[:Follows {createdOn: date("2024-02-01")}]->(brainy),
(mochaeach)-[:Follows {createdOn: date("2024-02-10")}]->(brainy),
(brainy)-[:Joins {memberNo: 1}]->(c)
更新个别属性
更新每个指定属性的值:
MATCH (n:User {name: 'rowlock'})-[e:Follows]->(:User {name: 'Brainy'})
SET n.gender = 'male', e.createdOn = '2024-01-07'
RETURN n.gender, e.createdOn
清除个别属性
将指定属性的值设为null,即可清除该属性的值:
MATCH (n:User {name: 'mochaeach'})
SET n.gender = null
覆盖所有属性
你可以通过使用记录(Record)来覆盖更新某个点或边的全部属性值。记录中出现的属性会被更新,而未提及的属性将自动被设为null。
MATCH (n:User {name: 'purplechalk'})
SET n = {name: 'MasterSwift'}
RETURN n
使用一个空记录即可清除所有属性值:
MATCH (n:User {name: 'rowlock'})
SET n = {}
值类型不匹配
如果提供的值不匹配属性值类型并且无法进行转换,将使用属性值类型的默认值作为属性的新值。
例如,试图将UINT64类型的memberNo属性值更新为一个字符串,memberNo会被自动设为0:
MATCH ()-[e:Joins]->()
SET e.memberNo = 'm2'
开放图
示例图

CREATE GRAPH myGraph ANY
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: date("2024-01-05")}]->(brainy),
(purplechalk)-[:Follows {createdOn: date("2024-02-01")}]->(brainy),
(mochaeach)-[:Follows {createdOn: date("2024-02-10")}]->(brainy),
(brainy)-[:Joins {memberNo: 1}]->(c)
添加标签
给点添加一个标签:
MATCH (n:User {name: 'rowlock'})
SET n:Person
给点添加两个标签:
MATCH (n:User {name: 'rowlock'})
SET n:Player, n:Employee
若要移除点或边的标签,可使用REMOVE语句。
更新个别属性
更新每个指定属性的值:
MATCH (n:User {name: 'rowlock'})-[e:Follows]->(:User {name: 'Brainy'})
SET n.gender = 'male', e.createdOn = date('2024-01-07')
RETURN n.gender, e.createdOn
替换所有属性
To overwrite all property values:
MATCH (n:User {name: 'purplechalk'})
SET n = {name: 'MasterSwift'}
RETURN n