是否可以使用gremlin scala

时间:2016-10-05 07:55:39

标签: scala graph-databases titan gremlin tinkerpop3

目前我有两个gremlin查询,它们将获取两个不同的值,并且我在地图中填充。 场景:A-> B,A-> C,A-> D

我的查询,

  1. graph.V().has(ID,A).out().label().toList()
  2. 获取A。

    的outE标签列表

    结果:列表(B,C,D)

    1. graph.traversal().V().has("ID",A).outE("interference").as("x").otherV().has("ID",B).select("x").values("value").headOption()
    2. 给定A和B,得到egde属性值(A-> B)

      返回:10

      我是否有可能将两个查询结合起来以获得地图[(B,10)(C,11)(D,12)]

      当我有两个查询时,我遇到了一些性能问题。它需要更多时间

2 个答案:

答案 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]