首页 文章

Gremlin查询找到k个距离顶点

提问于
浏览
0

我试图运行一个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的情况下使用循环(使用它有困难),并且有一些方法来打印距离以及顶点列表 . 谢谢 .

1 回答

  • 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]
    

相关问题