如何用Gremlin脚本替换边缘

时间:2013-08-21 22:20:52

标签: graph gremlin titan

我想寻找一个顶点,获取一个边'视图',删除它,并用相同顶点之间的新边替换。

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

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

2 个答案:

答案 0 :(得分:1)

您可以像使用sideEffect一样使用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”。

答案 1 :(得分:0)

在queston eddit之前修复了第一个错误。


完成...

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

.next()修复了脚本..