#groovy #gremlin
#groovy #гремлин
Вопрос:
Мой график выглядит так
P1
|
R1
|
Src
/
R2 R2
/
C1 C2
Я пытаюсь извлечь узлы Src, R2, C2, R1 и P1, где R представляет отношение, а P, C — для родительского и дочернего узлов соответственно.
Я попробовал это:
g.V('src').out('R1', 'R2') // now i want some filters on node and relation depending upon type.
Я смог сделать это, посетив отношение R1 из src, а затем вернувшись в Src и посетив R2 и C2, но я пытаюсь избежать повторного обхода.
Я совершенно новичок в gremlin и проверил документацию, но не смог найти конкретного.
Ответ №1:
Есть много вариантов, но я полагаю, что ответ зависит от того, чего вы в конечном итоге хотите достичь. Вы могли бы просто project()
преобразовать свой результат в a Map
и обрабатывать каждую метку ребра независимо, если это соответствует вашему ожидаемому результату:
g.V('src').
project('r1','r2').
by(out('R1').has(...)....fold())
by(out('R2').has(...)....fold())
или, если вы на самом деле не готовы к «результату» и вам не нужно разделять два потока, которые вы могли бы использовать union()
:
g.V('src').union(out('R1').has(...), out('R2').has(...))....
Возможно, эти варианты послужат для вас источником вдохновения.
Комментарии:
1. Я новичок и хочу использовать union (выглядит просто), Техас.