Использование гремлина для поиска всех узлов в пределах заданного расстояния от начального узла


Я пытаюсь использовать gremlin через java / pipes, и в качестве одного из моих первых запросов я пытаюсь найти все узлы, которые доступны из данного начального узла с максимальным расстоянием 3. В cypher мой запрос:

START n = node(*)
MATCH n -[*1..3]-> reached 
WHERE (has(n.id) and n.id = "v1")
RETURN distinct n, reached

Который работает правильно, и что у меня есть до сих пор в гремлине:

_().has('idd', 'v1').out().loop(1){it.loops < 3}{true}

Который не работает правильно. Насколько я понимаю, он должен выдавать выходные данные из каждой итерации и повторять их 3 раза. На данный момент я получаю слишком мало результатов.

Любой помощь была бы признательна,

Спасибо.

1 3

1 ответ:

Если начальным узлом является g.v(1), то для поиска всех уникальных узлов в трех шагах от него выполните следующие действия:

g.v(1).out.loop(1){it.loops < 3}{true}.dedup

..возможно, вам придется сделать это

g.V('idd','v1').out.loop(1){it.loops < 3}{true}.dedup

Убедитесь, что у вас есть индекс idd или что это линейное сканирование через все g.V для тех вершин, которые имеют idd=v1.

HTH, Марко.