【问题标题】:How to replace an edge with Gremlin script如何用 Gremlin 脚本替换边缘
【发布时间】:2013-08-21 22:20:51
【问题描述】:

我想查找一个顶点,获取一个边“视图”,将其删除,然后用相同顶点之间的新边替换。

g.V('uuid','bf4dcbd24e9944319954dec5ad60c658')  
.inE('views')
.sideEffect{g.addEdge(it.outV.next(),it.inV.next(),'likes')}
.sideEffect{g.removeEdge(it)}

这可行,但这是最好的方法吗?重命名边缘是一种选择吗?

【问题讨论】:

    标签: graph gremlin titan


    【解决方案1】:

    您可以像以前一样使用 sideEffect。这种方法的积极方面是简单易懂。但是,我个人对“生产”Gremlin 代码的偏好是在可用时使用显式的 Gremlin 函数。在这种情况下,我看到了使用“链接”和“步骤关闭”(https://github.com/tinkerpop/gremlin/wiki/Step-Closures)的机会:

    gremlin> g = TinkerGraphFactory.createTinkerGraph()
    ==>tinkergraph[vertices:6 edges:6]
    gremlin> g.E
    ==>e[10][4-created->5]
    ==>e[7][1-knows->2]
    ==>e[9][1-created->3]
    ==>e[8][1-knows->4]
    ==>e[11][4-created->3]
    ==>e[12][6-created->3]
    gremlin> g.v(1).as('x').outE('knows').as('toRemove').inV.except('x').linkIn('swonk','x').sideEffect{v,m->g.removeEdge(m.toRemove)} 
    ==>v[2]
    ==>v[4]
    gremlin> g.E
    ==>e[1][1-swonk->4]
    ==>e[10][4-created->5]
    ==>e[0][1-swonk->2]
    ==>e[9][1-created->3]
    ==>e[11][4-created->3]
    ==>e[12][6-created->3]
    

    在上面,我将 g.v(1) 的所有“知道”边缘“重命名”为“swonk”。

    【讨论】:

      【解决方案2】:

      修复了问题编辑之前的第一个错误。


      完成...

      g.V('uuid','bf4dcbd24e9944319954dec5ad60c658') 
      .inE('views')
      .sideEffect{g.addEdge(it.outV.next(),it.inV.next(),'likes')}
      

      .next() 修复了脚本..

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-12
      • 2018-02-06
      相关资源
      最近更新 更多