У меня есть (сломанный) кусок кода Гремлина, чтобы сгенерировать кратчайший путь от данной вершины до той, которая имеет параметр test_parameter
. Если этот параметр не найден на ребре, пути не должны возвращаться.
s.V(377524408).repeat(bothE().has('date', between(1554076800, 1556668800)).otherV()) /* date filter on edges */
.until(or(__.bothE().has('test_property', gt(0)),
loops().is(4))) /* broken logic! */
.path()
.local(unfold().filter(__.has('entity_id')).fold()) /* remove edges from output paths*/
Прерванная строка - .until(or(__.outE().has('test_property', gt(0)), loops().is(4)))
.
В настоящее время - и имеет смысл, почему - он дает все пути, которые являются 4 скачками от начальной вершины.
Я пытаюсь адаптировать его так, чтобы, если ход был в 4 итерации, и если свойство test_property
равно не найдено, то оно не должно возвращать никаких путей,Если найден test_property
, он должен возвращать только путь (и) к этой вершине.
Я попытался наложить ограничение times(4)
и удалить условие loops()
, ноне знаю, как иметь ограничение times(4)
this и .has('test_property', gt(0))
.