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)
.