使用后退步骤获取两个连接的顶点
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]
如果我有 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]