我知道我可以通过id在一个步骤中选择多个特定顶点,例如(使用gremlin-python语法):
g.V([1, 2, 3]).next()
>>> [v[1], v[2], v[3]]
如何为每个选定的项目添加具有不同值的属性?例如,我希望如此:
所以我希望能说出类似的话:
g.V([1, 2, 3]).<add property 'x' with values ['a', 'b', 'c']>.next()
有可能吗?
答案 0 :(得分:2)
您可以使用choose()来完成类似于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()
运行时生成的密钥,该密钥仅在该版本中添加。
我认为你不能使用“{”的Map
的键来处理没有lambda的顶点的查找(也许我不会想到一些简单的东西),所以不幸的是你有要指定两次ID,但您可以非常轻松地对其进行参数化,因为您只需要构建Map
,然后从中抓取.keys()
以提供给V()
。