0
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 语言获得它?

4

1 回答 1

3

您只从“alice”穿过两次,both().both()因此您的路径只能是长度 3,其中包括“alice”顶点和远离“alice”的每一步的两个顶点(即both()一步,第二步both()是下一步步)。如果你想要做“D”,你必须添加另一个both(),以便 Gremlin 可以遍历另一组边缘,我想还有一个从“D”回到“alice”。

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

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

请注意,我控制了循环times(4)来定义距离“爱丽丝”要遍历多少步both()。您还可以使用它until()来控制它以获得更动态的方式来控制循环终止 - 请参阅repeat()了解更多信息。

于 2017-12-06T12:12:19.143 回答