概述
删除操作根据过滤条件删除图集中的点、边数据。删除由delete()
命令触发。
删除点时,以该点为起点或终点的边也会被删除。使用复杂的过滤器进行删除时务要慎重,以免造成不可挽回的损失。
删除操作会增加图集中的无效数据,从而影响数据查询效率。建议定期对图集进行碎片整理,详见碎片整理命令
compact()
。
不建议在流式返回的算法语句之后组装删除语句。
语法
- 子句别名:不支持
- 参数别名:所有参数均不支持定义别名
// 删除当前图集中的N个点数据
delete().nodes(<filter>).limit(<N>)
// 删除当前图集中的N个边数据
delete().edges(<filter>).limit(<N>)
示例
示例图集
在一个空图集中,依次运行以下各行语句创建示例图集:
create().node_schema("account").edge_schema("follow")
create().node_property(@account, "name").edge_property(@follow, "time", datetime)
insert().into(@account).nodes([{_id:"U001", _uuid:1, name:"Jason"}, {_id:"U002", _uuid:2, name:"Tim"}, {_id:"U003", _uuid:3, name:"Grace"}, {_id:"U004", _uuid:4, name:"Ted"}])
insert().into(@follow).edges([{_uuid:1, _from_uuid:4, _to_uuid:1, time:"2021-09-10"}, {_uuid:2, _from_uuid:3, _to_uuid:2, time:"2020-03-12"}, {_uuid:3, _from_uuid:4, _to_uuid:2, time:"2023-07-30"}])
限制条件
本例删除name属性值为Jason的节点,与其相邻的两条边也被删除:
delete().nodes({name == "Jason"})
1 Node(s) Affected
2 Edge(s) Affected
限制数量
本例过滤条件为空,因此删除目标是所有边,但limit()
参数限制仅对最先找到的两个边进行操作:
delete().edges().limit(2)
2 Edge(s) Affected
删除所有
本例过滤条件为空,因此删除所有点:
delete().nodes()
3 Node(s) Affected