概述
使用语句delete()
可以删除符合过滤条件的点或边。
// 删除孤立点
delete().nodes(<filter?>).nodetach()
// 删除点和与其相连的边
delete().nodes(<filter?>).detach()
// 删除边
delete().edges(<filter?>)
方法 |
参数 |
描述 | 可选 |
---|---|---|---|
nodes() 或edges() |
<filter?> |
将过滤条件包裹在{}中,或使用别名指定待删除的点或边。留空时会作用在所有点或边上 | 否 |
nodetach() |
/ | 避免删除与边相连的点,默认使用该方法 | 是 |
detach() |
/ | 强制删除点和与点相连的边 | 是 |
当任一端点从图中删除时,边将无法存在。默认情况下,UQL不允许删除与边相连的点。
然而, 您可使用detach()
或nodetach().force()
方法删除点和与点相连的边。例如,删除点B
后,边1
、2
和4
也将被删除。
示例图集
在一个空图集中,逐行运行以下UQL语句,创建示例图集:
create().node_schema("user").edge_schema("follow")
create().node_property(@user, "name").node_property(@user, "age", int32).edge_property(@follow, "time", datetime)
insert().into(@user).nodes([{_id:"U001", name:"Jason", age:30}, {_id:"U002", name:"Tim"}, {_id:"U003", name:"Grace", age:25}, {_id:"U004", name:"Ted", age:26}, {_id:"U005", name:"Kyle", age:21}])
insert().into(@follow).edges([{_from:"U004", _to:"U001", time:"2021-9-10"}, {_from:"U003", _to:"U001", time:"2020-3-12"}, {_from:"U004", _to:"U002", time:"2023-7-30"}])
删除孤立点
删除name
为Kyle的孤立点:
delete().nodes({name == "Kyle"})
查询语句delete().nodes()
删除孤立点,若待删除的点与边相连,则会引发报错,且不会删除任何点。
删除任意点
删除name
为Grace的点及其相连的边:
delete().nodes({name == "Grace"}).detach()
删除所有点,同时删除所有边:
delete().nodes().detach()
删除边
删除边@follow
:
delete().edges({@follow})
限制删除数量
要限制待删除的点/边数量,首先需使用find()
语句从数据库中获取数据,接着应用LIMIT
语句,仅保留前N条记录至别名中,随后传递给delete()
语句。
删除任意两条边:
find().edges() as e limit 2
delete().edges(e)
return e{*}
结果:e
_uuid |
_from |
_to |
_from_uuid |
_to_uuid |
schema |
values |
---|---|---|---|---|---|---|
Sys-gen | U004 | U001 | UUID of U004 | UUID of U001 | follow | {time: "2021-09-11 00:00:00"} |
Sys-gen | U004 | U002 | UUID of U004 | UUID of U002 | follow | {time: "2023-07-31 00:00:00"} |