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 与给它的参数相同(即流中的当前边)。
给定一组顶点(例如,为简单起见,我从一个顶点开始: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 与给它的参数相同(即流中的当前边)。