如何循环所有连接的顶点?
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()。
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()。