在Tinkerpop 3中查找具有特定边类型的所有路径

时间:2014-12-22 13:30:29

标签: gremlin tinkerpop tinkerpop3

我想找到“朋友”边缘可用的所有路径:

g.v(1).out("friend").out("friend").....

所以结果将是v(1)的所有路径,可以通过这种边缘类型连接。如果我也可以限制搜索长度并且可以有多个边缘类型而不是“朋友”,那会很棒,例如:

g.v(1).out("friend" or "enemy").out("friend" or "enemy). .....

如果我有两个节点并且想要找到所有路径/最短路径,那会是什么样的gremlin?

2 个答案:

答案 0 :(得分:1)

使用jump递归遍历路径和path步骤以实现遍历的路径:

gremlin> g = TinkerFactory.createClassic()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.V(1).as('x').out('knows').jump('x'){it.loops<3}{true}
==>v[2]
==>v[4]
gremlin> g.V(1).as('x').out().jump('x'){it.get().id() != 5 && it.loops < 6}.path()
==>[v[1], v[4], v[5]]

在GremlinDocs中查看更多详情:

答案 1 :(得分:0)

我这样做:

g.V(1).as('x').out('knows').loop('x'){it.loops<100}{true}

意思是通过“知道”来自Vertex 1。边缘并继续这样做,直到你做了100次。要说它会返回以这种方式连接的顶点列表。