Вы можете использовать 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
из "x«для обработки поиска вершины без лямбды (может быть, я не думаю о чем-то простом), поэтому, к сожалению, вам придется указывать идентификаторы дважды, но вы можете довольно легко параметризовать это, потому что вам просто нужно создать Map
и затем возьмите .keys()
из него, чтобы дать V()
.