代码之家  ›  专栏  ›  技术社区  ›  user1189332

TinkerPop 3 Gremlin在遍历期间收集边缘属性

  •  0
  • user1189332  · 技术社区  · 6 年前

    使用TinkerPop 3 Java API:

    我的图表如下:

    james {risk: 'n'} --> chris {risk: 'n'} --> raj {risk: 'n'} --> joanne {risk: 'y'}
    
    The edge label is 'travelledWith' and a property called 'pnrLocator'
    

    这就是我所拥有的,它只适用于顶点属性。如何添加“by”并收集“pnrLocator”?

    GraphTraversal<Vertex, ?> values =
                    g.traversal()
                            .V()
                            .has("personId", "james")
                            .repeat(out("travelledWith"))
                            .until(has("risk", "y"))
                            .limit(100)
                            .path()
                            .by("personId");
    
    
            values.forEachRemaining(v -> System.out.println(v));
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   stephen mallette    6 年前

    这个 path() step将使用“modern”TinkerPop toy图输出Gremlin遍历的所有元素,给出您提供的步骤:

    gremlin> g.V().repeat(out()).emit().path().by("name")
    ==>[marko,lop]
    ==>[marko,vadas]
    ==>[marko,josh]
    ==>[marko,josh,ripple]
    ==>[marko,josh,lop]
    ==>[josh,ripple]
    ==>[josh,lop]
    ==>[peter,lop]
    

    out() 它返回顶点,所以这是我在路径输出中看到的唯一输出。如果我稍微更改遍历以显式地遍历边(即。 输出() outE().inV()

    gremlin> g.V().repeat(outE().inV()).emit().path().by("name").by('weight')
    ==>[marko,0.4,lop]
    ==>[marko,0.5,vadas]
    ==>[marko,1.0,josh]
    ==>[marko,1.0,josh,1.0,ripple]
    ==>[marko,1.0,josh,0.4,lop]
    ==>[josh,1.0,ripple]
    ==>[josh,0.4,lop]
    ==>[peter,0.2,lop]