【问题标题】:Gremlin, join vertices of same type and add edge when the properties empNo and mgrno matchesGremlin,连接相同类型的顶点并在属性 empNo 和 mgrno 匹配时添加边
【发布时间】:2015-05-14 06:32:55
【问题描述】:

我的顶点具有如下属性 vertex("empNo","age","Date","mgrNo") a(101,20,'dd-mm-yy',0) b(102,22,'dd-mm-yy',101) 由于 b 的 mgrNo 与 a ie 的 empNo 匹配,因此 a 是 b 的经理。 我必须在 a 和 b 之间添加一条边。 请告诉我如何在 gremlin 中执行此操作。

【问题讨论】:

    标签: graph titan gremlin vertex


    【解决方案1】:

    我假设您想要迭代所有顶点。你可以很容易地用sideEffect 做到这一点:

    g.V.has("mgrNo",neq,0).sideEffect{
      g.V.has("empNo",it.mgrNo).next().addEdge("manages",it)
    }
    

    请注意,如果您使用支持事务的图表,则需要commit() 将您的更改持久化。

    【讨论】:

    • 嗨斯蒂芬,它只是增加了一个边缘。假设我有像 empNo,Name,age,mgrNo 101,Alice,32,0 102,Bob,30,101 103,Mary,28,101 104,Lisa,25,102 这样的数据。如果该顶点的 mgrNo 不为零,我想遍历每个顶点并添加关系
    • 代码在我看来仍然正确。它迭代所有顶点以寻找拥有经理的员工(即mgrNo!= 0),并为每个顶点在该员工和经理之间添加一个“管理”边。如果您尝试了上述方法但失败了,请以 groovy 脚本的形式提供一些示例数据,我可以将其粘贴到 Gremlin 控制台中,我可以自己进行测试。
    • 它现在可以正常工作了。非常感谢您的回复。
    • 该代码适用于少量顶点但如果我有像 16k 顶点这样的顶点并且当我运行上面的代码时,它只添加一个边并停止。为什么会这样。我正在使用 BatchGraph 加载数据。
    • BatchGraph 用于非常特定类型的数据加载用例,这种加载发生在蓝图级别。我认为如果您尝试在 Gremlin 上运行 Gremlin(这就是上面的代码正在做的事情),您可能会预料到问题,因为 Gremlin 所需的所有蓝图方法/功能都没有在 BatchGraph 中实现。
    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2019-01-06
    • 2021-11-06
    相关资源
    最近更新 更多