命令、参数
删除操作会将当前图集中满足过滤条件的点、边删除。在使用复杂过滤器进行删除时一定要慎重,以免产生不可挽回的损失。删除点时,以该点为端点的边也会被系统删除。
语法:
- 命令:
delete()
- 参数:(见下表)
- 语句别名:不支持自定义别名
参数 | 类型 | 规范 | 描述 | 自定义别名结构类型 |
---|---|---|---|---|
nodes() 或 edges() |
filter | Ultipa 过滤器,必填 | 点或边的过滤条件 | 不支持自定义别名 |
limit() |
int | > 0 | 要删除的点或边的数量 | 不支持自定义别名 |
删除操作会增加图集中的无效数据,影响数据查询的效率,建议定期对图集进行碎片整理,详见上一章内容《图集》篇的
compact()
命令。
不建议在算法流式返回之后进行删除操作,详见《Ultipa 图分析与图算法》-《算法的使用》-《执行方式》-流式返回
stream()
的相关说明。
// 删除当前图集中的点数据
delete().nodes(<filter>).limit(<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()
参数限制处理的数据量,分批进行处理。