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

How can I cycle all the vertex that are connected?

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

您仅使用 both().both() 两次离开 "alice" 因此您的路径长度只能为 3,其中包括 "alice" 顶点和每一步远离的两个顶点"alice"(即 both() 是一步,第二个 both() 是下一步)。如果你想做 "D" 你已经添加了另一个 both() 这样 Gremlin 就可以遍历另一组边,我想还有一个从 [=29= 回到 "alice" ].

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

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

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