Gremlin:如何在单个查询中获取传出边及其目标顶点

Gremlin: How to obtain outgoing edges and their target vertices in a single query

给定一组顶点(例如,为简单起见,我从一个顶点开始:G.V().hasId("something")),我想获得所有出边 它们的目标顶点.我知道 .out() 会给我所有目标顶点,但没有关于边的信息(它们也有属性)。另一方面,.outE() 会给我边而不是目标顶点。我可以在一个 Gremlin 查询中获得两者吗?

没关系。想通了。

G.V().hasId("something").outE().as("E").otherV().as("V").select("E", "V")

Gremlin 既可以转换图形数据,也可以导航图形数据。通常情况下,人们似乎首先了解导航,这让您到达了:

g.V().hasId("something").outE()

然后您需要将这些边转换为您想要的结果 - 一个包含边数据及其相邻顶点的结果。一种方法是使用 project():

g.V().hasId("something").outE()
  project('e','v').
    by().
    by(inV())

提供给 project() 的每个 by()-调制器与作为参数提供的键对齐。第一个适用于 "e",第二个适用于 "v"。第一个 by() 是空的,实际上是 by(identity()),returns 与给它的参数相同(即流中的当前边)。