Gremlin 递归删除顶点

问题描述

我尝试使用 gremlin 查询删除包含所有子节点的顶点:

g.V()
    .hasId(someId)
    .union(fold().unfold(),repeat(in()).emit())
    .drop()
    .iterate()

不幸的是我收到一个错误

org.apache.tinkerpop.gremlin.driver.exception.ResponseException:删除 ID 为“someId”的顶点

但是“someId”存在于数据库中!

Java + JanusGraph:

org.janusgraph:janusgraph-driver:0.5.3

org.apache.tinkerpop:gremlin-driver:3.5.0

解决方法

aggregate(local) 先放下东西然后再移除它们可能会有所帮助 - 例如:

g.withSideEffect('x',[] as Set).
  V().hasId(someId).aggregate(local,'x').
  repeat(in()).emit()).aggregate(local,'x').
  cap('x').
  drop()