Gremlin 向多个顶点中的每个顶点添加不同的值
我知道我可以在一个步骤中按id选择多个特定顶点,例如(使用gremlin python语法): 然后,如何向每个选定项添加具有不同值的属性?例如,我希望:Gremlin 向多个顶点中的每个顶点添加不同的值,gremlin,tinkerpop,Gremlin,Tinkerpop,我知道我可以在一个步骤中按id选择多个特定顶点,例如(使用gremlin python语法): 然后,如何向每个选定项添加具有不同值的属性?例如,我希望: 顶点1具有值为“a”的属性“x” 顶点2具有值为“b”的属性“x” 顶点3具有值为“c”的属性“x” 所以我想说: g.V([1, 2, 3]).<add property 'x' with values ['a', 'b', 'c']>.next() g.V([1,2,3])…下一步() 有可能吗?你可以用它来完成一些类
- 顶点1具有值为“a”的属性“x”
- 顶点2具有值为“b”的属性“x”
- 顶点3具有值为“c”的属性“x”
g.V([1, 2, 3]).<add property 'x' with values ['a', 'b', 'c']>.next()
g.V([1,2,3])…下一步()
有可能吗?你可以用它来完成一些类似的事情,它会给你if-then-else类型的分支。使用TinkerPop发行版附带的现代玩具图:
gremlin> g.V(1,2,3).
......1> choose(id()).
......2> option(1, property('switch','a')).
......3> option(2, property('switch','b')).
......4> option(3, property('switch','c')).iterate()
gremlin> g.V(1,2,3).
......1> project('id','switch').
......2> by(id).
......3> by('switch')
==>[id:1,switch:a]
==>[id:2,switch:b]
==>[id:3,switch:c]
从TinkerPop 3.3.3开始,您还可以使用副作用执行类似操作:
gremlin> g.withSideEffect('x',[1:'a',2:'b',3:'c']).
......1> V(1,2,3).as('v').
......2> property('switch', select('x').
......3> select(select('v').id()))
==>v[1]
==>v[2]
==>v[3]
gremlin> g.V(1,2,3).
......1> project('id','switch').
......2> by(id).
......3> by('switch')
==>[id:1,switch:a]
==>[id:2,switch:b]
==>[id:3,switch:c]
您需要3.3.3+,因为您需要能够select()
我不认为您可以在没有lambda的情况下使用“x”的Map
键来处理顶点的查找(也许我没有想到简单的事情),因此不幸的是您必须指定两次ID,但是您可以非常容易地将其参数化,因为您只需要构造Map
,然后获取键()
从it给V()
谢谢-对于少量选项来说,这是一个很好的答案,但它不能扩展到我希望使用的长列表。基于评论的更新答案-现在看起来怎么样?谢谢-这看起来确实像我想要的答案。不幸的是,我无法在gremlin python中使用它(3.3.3的服务器和python模块),可能是因为我提供映射的方式:g.withSideEffect('x',[(1,'a'),(2,'b'),(3,'c')).V([1,2,3]).as_V('V').property('switch',select('x').select('V').id()).next()>>GremlinServerError:500:提供的遍历器没有映射到值:V[1]->[SelectOneStep(last,x),traversalselectonestep([SelectOneStep](最后,v),IdStep])
我会继续尝试,除非有人能发现我在这里做错了什么。副作用应该是一个字典,所以在python中我会做{1:'a',2:'b',3:'c'}
gremlin> g.withSideEffect('x',[1:'a',2:'b',3:'c']).
......1> V(1,2,3).as('v').
......2> property('switch', select('x').
......3> select(select('v').id()))
==>v[1]
==>v[2]
==>v[3]
gremlin> g.V(1,2,3).
......1> project('id','switch').
......2> by(id).
......3> by('switch')
==>[id:1,switch:a]
==>[id:2,switch:b]
==>[id:3,switch:c]