如何在单个gremlin查询中添加多个边?

man*_*ran 1 gremlin tinkerpop3

我的场景是在单个查询中在顶点之间添加多个边:

假设以下节点:这些是我拥有的标签和ID

用户数:

4100

歌曲:

4200

4355

4676

我必须在这些顶点之间建立边缘

4100 --> 4200, 
4100 --> 4355, 
4100 --> 4676.
Run Code Online (Sandbox Code Playgroud)

通常可以通过在node之间创建单个边来完成此操作。如果我们想一次在50个以上的顶点之间创建边,则这不是一种有效的方法。我正在使用Tinkerpop 3.0.1。

Fil*_*ira 6

使用最新的Tinkerpop。您可以执行以下操作:

创建一个样本图:

gremlin> graph = TinkerGraph.open();
gremlin> graph.addVertex("User").property("id", 4100);
==>vp[id->4100]
gremlin> graph.addVertex("Song").property("id", 4200);
==>vp[id->4200]
gremlin> graph.addVertex("Song").property("id", 4355);
==>vp[id->4355]
gremlin> graph.addVertex("Song").property("id", 4676);
==>vp[id->4676]
Run Code Online (Sandbox Code Playgroud)

现在,在单个遍历中添加边:

gremlin> graph.traversal().V().hasLabel("User").as("a").
         V().hasLabel("Song").
         addE("edge to song").from("a");
==>e[8][0-edge to song->2]
==>e[9][0-edge to song->4]
==>e[10][0-edge to song->6]
Run Code Online (Sandbox Code Playgroud)

这显示了addE在遍历内使用副作用的另一个示例。


Fab*_*ian 6

我有一个类似的问题。使用C#SDK,我这样做是这样的:

g.V('4100')
.addE('knows').to(g.V('4200')).outV()
.addE('knows').to(g.V('4355')).outV()
.addE('knows').to(g.V('4676'))
Run Code Online (Sandbox Code Playgroud)