删除操作是指根据过滤条件删除图集中已有的点、边数据,由 delete()
命令触发。删除点时,以该点为起点/终点的边也会自动删除。在使用复杂过滤器进行删除时一定要慎重,以免产生不可挽回的损失。
删除操作会增加图集中的无效数据,影响数据查询的效率,建议定期对图集进行碎片整理,详见《图集》中的
compact()
命令。
不建议在算法流式返回之后进行删除操作,详见《Ultipa 图分析与图算法》-《算法的使用》-《执行方式》-流式返回
stream()
的相关说明。
语法:
- 语句别名:不支持
// 删除当前图集中的 N 个点数据
delete().nodes(<filter>).limit(<N>)
// 删除当前图集中的 N 个边数据
delete().edges(<filter>).limit(<N>)
示例:删除 ID = C003 的点
delete().nodes({_id == "C003"})
示例:删除起点为 C004 的边
delete().edges({_from == "C004"})
示例:删除 1000 张 2 级以下且余额为 0 的银行卡
delete().nodes({@card && level < 2 && balance == 0}).limit(1000)
分析:内存紧张或数据量过大时,可使用 limit()
参数限制处理的数据量,分批进行处理。