使用后退步骤获取两个连接的顶点

Using a back step to get two connected vertexes

如果我有 3 个顶点的 A、B、C,其中 B 有一个到 A 和 C 的边。从 B 开始我如何获得 A 和 C 的值

g.V("b").out("toC").as("c").out("toA").as("a").select("c", "a").next()

这就是我所拥有的,但它会导致错误,因为我认为您无法从 C 转到 A,因为它们没有连接。我需要一种先回到 B 的方法,但我没有看到后退步骤。

使用这张图

gremlin>  g.addV('A').as('a').
......1>    addV('B').as('b').
......2>    addV('C').as('c').
......3>    addE('toA').from('b').to('a').
......4>    addE('toC').from('b').to('c')
==>e[42783][42780-toC->42781]  

您可以使用

找到连接到B的顶点
gremlin> g.V().hasLabel('B').out().elementMap()

==>[id:42774,label:A]
==>[id:42776,label:C]  

如果 B 有很多边,而您只需要特定的边,您也可以使用特定的边标签进行过滤:

gremlin> g.V().hasLabel('B').out('toA','toC').elementMap()

==>[id:42774,label:A]
==>[id:42776,label:C]   

如果您确实需要编写查询以使其按照您在问题中显示的方式工作,那么这是一种方法:

gremlin> g.V().hasLabel('B').as('b').
......1>       out('toA').as('a').
......2>       select('b').
......3>       out('toC').as('c').
......4>       select('a','c').
......5>         by(elementMap())  

==>[a:[id:42779,label:A],c:[id:42781,label:C]] 

您也可以试试:

    gremlin> g.V().hasLabel('B').
    ......1> outE().hasLabel('toA','toC').
    ......2> inV().elementMap()

    ==>[id:0,label:A]
    ==>[id:2,label:C]