我试图运行一个gremlin查询来查找给定顶点v的k个距离顶点,并省略直接连接的顶点到v。
我正在使用Gremlin 3.2.6。
所以,这样的事情,对于k距离(朋友的朋友)来说还不能正常工作
g.V(v).both().as(“x”).repeat(both()).times(k).where(neq("x")).dedup()
上面应该省略" x"中的顶点。但事实并非如此。 我的图是指向的,并且在一对顶点之间可能存在两个方向上的边。
另外,如何在给定距离小于某些k的情况下使用循环(使用它有困难)来制作这种通用,并且有一些方法可以打印距离和顶点列表。感谢。
答案 0 :(得分:2)
x
实际上应该是所有相邻顶点的聚合,而不仅仅是对当前路径上相邻顶点的引用。
gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V(1).both().aggregate("x").
repeat(both().dedup()).
times(5).
emit().
where(without("x"))
==>v[1]
==>v[6]
==>v[5]
如果您还想排除起始顶点,只需将其添加到集合中:
gremlin> g.V(1).store("x").
both().aggregate("x").
repeat(both().dedup()).
times(5).
emit().
where(without("x"))
==>v[6]
==>v[5]