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

Gremlin 在Tinkerpop 3中查找具有特定边类型的所有路径,gremlin,tinkerpop,tinkerpop3,Gremlin,Tinkerpop,Tinkerpop3,我想找到“朋友”边缘的所有可用路径: 因此,结果将是来自v(1)的所有路径,这些路径可以通过此边类型连接。如果我还可以限制搜索长度,并且可以使用多个边类型而不是“friend”,这将非常好,例如: g.v(1).out("friend" or "enemy").out("friend" or "enemy). ..... 如果我有两个节点,并且想要找到所有路径/最短路径,那么gremlin方法是什么?使用跳转递归遍历路径,使用路径步骤实现遍历的路径: gremlin> g = Tinke

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

因此,结果将是来自v(1)的所有路径,这些路径可以通过此边类型连接。如果我还可以限制搜索长度,并且可以使用多个边类型而不是“friend”,这将非常好,例如:

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

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

使用
跳转
递归遍历路径,使用
路径
步骤实现遍历的路径:

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]]
gremlin>g=TinkerFactory.createClassic()
==>tinkergraph[顶点:6条边:6]
gremlin>g.V(1).as('x').out('knows').jump('x'){it.loopsv[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中的更多详细信息:

    • 我会这样做:

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

      g.V(1).as('x').out('knows').loop('x'){it.loops谢谢你的回答,但我的问题是:g.V(1).out('friend'或'friend').out('friend'或'friend').out('knows')。out('knows').out('knows'))…如果我能给它设置一个限制,那就太好了。我的第二个问题是两个节点,找到它们之间所有可能的路径。更新了我的答案以反映您对问题的澄清,这是Tinkerpop3方式吗?(我以为Tnkerpop3中没有更多的循环?)更新了TP3的答案-很抱歉,在你的问题主题中遗漏了这一点。我不明白。循环,我不知道我想采取多少步骤,我只想采取我找到的“知道”的步骤,当我不使用循环时,它将不起作用
      
      g.V(1).as('x').out('knows').loop('x'){it.loops<100}{true}