Использование гремлина для поиска всех узлов в пределах заданного расстояния от начального узла
Я пытаюсь использовать 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 ответ:
Если начальным узлом является 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, Марко.