Gremlin - Как отфильтровать края на свойстве при получении кратчайшего пути

Следующий запрос ищет набор кратчайших путей от заданной вершины (377524408) до другой вершины, имеющей ребро со свойством test_property, и завершается после 3 итераций (т. е. если вершина не найдена за 3 обхода, мы не возвращаем никаких путей).

s.V(377524408).repeat(both().simplePath())
    .until(or(__.bothE().has('test_feature', gt(0)), 
              loops().is(lt(4))))
    .path().dedup().toList()

Однако я хочу отфильтровать края, по которым проходит вышеуказанный запрос.

Например, пересекать только ребра, у которых есть свойство filter_property < 100. Как мне изменить приведенный выше запрос, чтобы включить этот краевой фильтр?

1 ответ

Решение

Вместо того both().simplePath() вы бы использовали bothE().has('filter_property', lt(100)).otherV().

Также обратите внимание, что loops().is(lt(4)) всегда буду оценивать trueв первой итерации. Вы, наверное, хотите, чтобы это былоloops().is(3).

Другие вопросы по тегам