Как использовать опцию CHOOSE step в гремлине меньше, чем внутри - PullRequest
1 голос
/ 10 июня 2019
.choose(values('points')
  .option(lt(500), updating the vertex properties)
  .option(gt(500), updating and creating new properties)
  .option(none,creating new vertex )) 

points - это свойство вершины целого типа

Я хочу выполнить меньше и больше операций внутри опция . Я пытаюсь описанным выше способом. Пожалуйста, поправьте меня, если я ошибаюсь.

Если есть другой способ сделать это, пожалуйста, дайте мне знать.

Спасибо

1 Ответ

1 голос
/ 10 июня 2019

Эта функция не была реализована в Apache TinkerPop 3.4.2. Это давно открытый выпуск: TINKERPOP-1084 . Я думаю, что если вы хотите эту функциональность, вам придется сделать вложенный choose():

gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().hasLabel('person').
......1>   choose(values('age').is(lt(29)),
......2>          constant('lt29'),
......3>          choose(values('age').is(gt(29)),
......4>                 constant('gt29'),
......5>                 constant('29')))
==>29
==>lt29
==>gt29
==>gt29

Обратите внимание, что вы не ограничены constant() в результате этих вложенных choose() операций. Вы можете добавить любой понравившийся вам анонимный обход, как в:

gremlin> g.V().hasLabel('person').
......1>   choose(values('age').is(lt(29)),
......2>          constant('lt29'),
......3>          choose(values('age').is(gt(29)),
......4>                 math('_ - 29').by('age'),
......5>                 constant('29')))
==>29
==>lt29
==>3.0
==>6.0
...