为多个顶点中的每一个添加不同的值
Add different values to each of multiple vertices
我知道我可以一步 select 通过 id 的多个特定顶点,例如(使用 gremlin-python 语法):
g.V([1, 2, 3]).next()
>>> [v[1], v[2], v[3]]
我怎样才能为每个 selected 项目添加一个具有不同值的 属性?例如,我想要:
- 顶点 1 有 属性 'x',值为 'a'
- 顶点 2 具有 属性 'x',值为 'b'
- 顶点 3 的 属性 'x' 值为 'c'
所以我希望可以这样说:
g.V([1, 2, 3]).<add property 'x' with values ['a', 'b', 'c']>.next()
可能吗?
您可以使用 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()
运行时生成的密钥,该密钥仅在该版本中添加。
我不认为你可以使用 "x" 的 Map
的键来处理没有 lambda 的顶点查找(也许我没有考虑简单的事情),所以不幸的是你必须指定两次 id,但你可以很容易地参数化它,因为你只需要构造 Map
然后从中获取 .keys()
给 V()
.
我知道我可以一步 select 通过 id 的多个特定顶点,例如(使用 gremlin-python 语法):
g.V([1, 2, 3]).next()
>>> [v[1], v[2], v[3]]
我怎样才能为每个 selected 项目添加一个具有不同值的 属性?例如,我想要:
- 顶点 1 有 属性 'x',值为 'a'
- 顶点 2 具有 属性 'x',值为 'b'
- 顶点 3 的 属性 'x' 值为 'c'
所以我希望可以这样说:
g.V([1, 2, 3]).<add property 'x' with values ['a', 'b', 'c']>.next()
可能吗?
您可以使用 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()
运行时生成的密钥,该密钥仅在该版本中添加。
我不认为你可以使用 "x" 的 Map
的键来处理没有 lambda 的顶点查找(也许我没有考虑简单的事情),所以不幸的是你必须指定两次 id,但你可以很容易地参数化它,因为你只需要构造 Map
然后从中获取 .keys()
给 V()
.