目前我有两个gremlin查询,它们将获取两个不同的值,并且我在地图中填充。 场景:A-> B,A-> C,A-> D
我的查询,
graph.V().has(ID,A).out().label().toList()
获取A。
的outE标签列表结果:列表(B,C,D)
graph.traversal().V().has("ID",A).outE("interference").as("x").otherV().has("ID",B).select("x").values("value").headOption()
给定A和B,得到egde属性值(A-> B)
返回:10
我是否有可能将两个查询结合起来以获得地图[(B,10)(C,11)(D,12)]
当我有两个查询时,我遇到了一些性能问题。它需要更多时间
答案 0 :(得分:0)
可能有更好的方法可以做到这一点,但我设法通过以下遍历得到了一些东西:
gremlin> graph.traversal().V().has("ID","A").outE("interference").as("x").otherV().has("ID").label().as("y").select("x").by("value").as("z").select("y", "z").select(values);
==>[B,1]
==>[C,2]
我会等待更多的答案,因为我怀疑那里有更好的遍历。
答案 1 :(得分:0)
以下是scala中的工作
val b = StepLabel[Edge]()
val y = StepLabel[Label]()
val z = StepLabel[Integer]()
graph.traversal().V().has("ID",A).outE("interference").as(b)
.otherV().label().as(y)
.select(b).values("name").as(z)
.select((y,z)).toMap[String,Integer]
这将返回Map [String,Int]