【问题标题】:Why does my Gremlin traversal add only one edge?为什么我的 Gremlin 遍历只添加了一条边?
【发布时间】:2021-04-29 21:02:27
【问题描述】:

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        -

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

【问题讨论】:

    标签: java groovy gremlin tinkerpop3


    【解决方案1】:

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

    你会想改变你的方法:

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

    但也许这会引出你的另一个问题。

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多