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



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

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

所以结果将是来自 V(1( 的所有路径,这些路径可以通过此边类型连接。 如果我也可以限制搜索长度并且可以拥有多个边缘类型而不是"朋友",那就太好了,例如:

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

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

使用 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 中查看更多详细信息:

  • http://www.tinkerpop.com/docs/3.0.0-SNAPSHOT/#jump-step

我会这样做:

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

这意味着从顶点 1 开始,通过"知道"边缘,并继续这样做,直到你做了 100 次。针说它将返回以这种方式连接的顶点列表。

相关内容

最新更新