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语言来获取它?
答案 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()。