为什么我的 Gremlin 遍历只添加了一条边?

问题描述

another question 中所述,我试图将几个“身份”顶点添加到“组”顶点中。基于 the recipe recommendation,我试图以遍历器迭代标识顶点而不是在循环中附加额外步骤的方式编写遍历步骤。这是我所拥有的:

gts.V(group)
  .addE('includes')
  .to(V(identityIds as Object[]))
  .count().next()

无论我在 identityIds 中传递多少个 ID,这始终返回值 1,并且只创建一条边。配置文件表明,即使我传递了多个值,也仅为 __.V 创建了一个遍历器:

Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
TinkergraphStep(vertex,[849e1878-86ad-491e-b9f9...                     1           1           0.633    40.89
AddEdgeStep({label=[Includes],~to=[[TinkerGrap...                     1           1           0.915    59.11
  TinkergraphStep(vertex,[50d9bb4f-ed0d-493d-bf...                     1           1           0.135
                                            >TOTAL                     -           -           1.548        -

为什么只有一条边添加到第一个顶点?

解决方法

您使用的 to() 语法不太正确。像 to() 这样的调制器期望您提供的遍历生成单个 Vertex 而不是列表。因此,给定 V(identityIds),只有从该 id 列表返回的第一个顶点将用于构造边。 to()by() 等步进调制器倾向于这样工作。

你可能想改变你的方法:

gts.V(identityIds)
  .addE('includes')
  .from(V(group))
  .count().next()

但也许这又回到了你的另一个问题。