Как пройти несколько разных отношений из исходного узла

#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 (выглядит просто), Техас.