微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Gremlin drop 只删除子图的第一个顶点

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

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

但它只删除A.
当我在没有 drop() 的情况下运行它时,它返回所有子图顶点的列表。
我使用的是 tinkerpop 控制台/服务器版本 3.4.9。

解决方法

在调用drop之前需要收集union step的结果。这是稍微修改的查询。

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]

另请注意,通过将 union 移动到 emit 之前并使用 repeat,无需执行 store 步骤即可完成此操作。

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

                           

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。