首页 > 解决方案 > 在 Gremlin 中,我如何将所有边缘重定向到一个顶点,以连接到另一个顶点?

问题描述

我使用 Neptune 作为我的图形数据库。

假设我有一个主顶点“A”,我想将所有指向“A”的连接重定向到新的主顶点“B”。我知道进入主顶点的所有边都标记为“master_edge”。

目前我混合了 python 和 gremlin 代码,我想知道是否有办法通过纯粹在 gremlin 中执行此操作来提高性能?

vertices_on_deck = g.V(old_master).inE().outV().toList()
          for i, current_vertex in enumerate(vertices_on_deck): 
            if i == 0:
                t = g.addE('master_edge').from_(__.V(current_vertex.id)).to(__.V(new_master))
            else: 
                t.addE('master_edge').from_(__.V(current_vertex.id)).to(__.V(new_master))
          t.iterate()
          g.V(old_master).drop().iterate()

标签: graph-theorygremlinamazon-neptune

解决方案


您可以将所有查询合并为一个:

g.V(old_master).as('oldMaster')
   .inE().outV().addE('master_edge').to(__.V(new_master))
   .select('oldMaster').drop().iterate()

推荐阅读