Как пройти несколько разных отношений из исходного узла - PullRequest
0 голосов
/ 11 апреля 2019

Мой график выглядит так

      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, но я пытаюсь избежать дублирования обхода.

Я совершенно новичок в гремлине и проверил документацию, но не смог найти конкретную.

1 Ответ

1 голос
/ 11 апреля 2019

Есть много вариантов, но я полагаю, что ответ зависит от того, чего вы в конечном итоге хотите достичь. Вы можете просто project() получить результат до 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(...))....

Возможно, эти варианты вдохновят вас.

...