Gremlin drop 只删除子图的第一个顶点

Gremlin drop deletes only the first vertex of the sub-graph

我有一个图,其中 A 连接到 B、C、D 有边。
我正在使用以下命令删除 A 及其连接的顶点。

g.V('A').
  union(__(),
    repeat(out()).emit()).drop()

但它只删除了 A.
当我 运行 它没有 drop() 它 returns 所有子图顶点的列表。
我正在使用 tinkerpop console/server 版本 3.4.9.

您需要在调用 drop 之前收集联合步骤的结果。这是稍微修改过的查询。

gremlin> g.addV('A').as('a').
......1>   addV('B').as('b').
......2>   addV('C').as('c').
......3>   addV('D').as('d').
......4>   addE('knows').from('a').to('b').
......5>   addE('knows').from('b').to('c').
......6>   addE('knows').from('c').to('d') 
==>e[41][37-knows->38]


gremlin>   g.V().hasLabel('A').
......1>   union(identity(),
......2>     repeat(out()).emit()).fold() 
==>[v[35],v[36],v[37],v[38]]


gremlin>   g.V().hasLabel('A').
......1>   union(identity(),
......2>     repeat(out()).emit()).fold().unfold().drop()   

gremlin> g

==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]

另请注意,通过将 emit 移到 repeat 之前并使用 store.[=16=,无需 union 步骤即可完成此操作]

g.V().hasLabel('A').
  emit().
  repeat(store('v').out()).
  cap('v').
  unfold().
  drop()