如何循环连接的所有顶点?

时间:2017-12-05 14:18:58

标签: gremlin tinkerpop3 janusgraph

In JanusGraph I have 4 nodes.
A(name=alice) -> B
B -> C
C -> D
D -> A

I want to get all the cycles from node A.

g.V().has('name', 'alice').both().both().cyclicPath().path().by('name')

我可以得到A-> B-> A和A-> D-> A.但我不能得到A-> B-> C-> D-> A。 我想得到从顶点A到顶点A的所有路径。 我如何使用groovy语言来获取它?

1 个答案:

答案 0 :(得分:3)

你只是远离"爱丽丝"两次both().both()因此你的路径只能是长度3,其中包括" alice"每一步的顶点和两个顶点远离" alice" (即both()是一步,第二步both()是下一步)。如果你想做到" D"你已经添加了另一个both(),以便Gremlin可以遍历另一组边缘,我会想到另一个回到" alice"来自" D"。

或者,您可以简单地使用repeat()

g.V().has('name', 'alice').
  repeat(both()).emit().times(4).
  cyclicPath().
  path().by('name')

请注意,我使用times(4)控制循环,以定义距离" alice"我想遍历both()。您还可以使用until()来控制它,以便采用更动态的方式来控制循环终止 - 有关详细信息,请参阅repeat()