首页 > 解决方案 > Scala 的 GREMLIN:如何在单个查询中在两个顶点之间放置边并在两个顶点之间连接边

问题描述

我通过https://github.com/mpollmeier/gremlin-scala#getting-started将这个库用于 gremlin scala 。

这是一个用例,有三个顶点(A,B,C)。两个 A、B 顶点已经与名为“IS”的边相连。

现在我想在单个 gremlin scala 查询中删除 A、B 之间的“IS”边缘并将 A 连接到 C 并使用名为“IS”的边缘。早些时候我写了两个不同的 gremlin scala 查询,一个用于删除边缘,另一个用于添加边缘,但我想将这两个查询合并为一个。

标签: scalaplayframeworkdatastax-enterprisedatastax-java-driver

解决方案


假设该库支持以下所有内容,您应该能够运行以下内容,这将删除 V(1) 和 V(2) 之间的关系,同时在 V(1) 和 V(6) 之间添加一条边。

依靠一个相关的问题来制定这个,可以在这里找到

对于您的情况:A=1, B=2, C=6

gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin>  g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.E()
==>e[7][1-knows->2]
==>e[8][1-knows->4]
==>e[9][1-created->3]
==>e[10][4-created->5]
==>e[11][4-created->3]
==>e[12][6-created->3]
gremlin> g.V(1).as('A').bothE().where(otherV().hasId(2)).as('drop').addE('IS').from('A').to(V(6)).select('drop').drop()
gremlin> g.E()
==>e[8][1-knows->4]
==>e[9][1-created->3]
==>e[10][4-created->5]
==>e[11][4-created->3]
==>e[12][6-created->3]
==>e[13][1-IS->6]

推荐阅读