Search code examples
gremlingraph-traversaltinkerpop3

TinkerPop 3: Gremlin query to group count by edge direction


I have a vertex id to start with and wanted to get counts of in and out edges.

g.traversal().V().has("__id", "1234").groupCount().by(Direction.BOTH)

As .by() step wont accept Direction type., is there any alternative way?


Solution

  • You can do this nicely with project step:

    gremlin> graph = TinkerFactory.createModern()
    ==>tinkergraph[vertices:6 edges:6]
    gremlin> g = graph.traversal()
    ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
    gremlin> g.V().has('name','marko').
                   project('out','in').
                     by(outE().count()).
                     by(inE().count())
    ==>[out:3,in:0]
    

    For TinkerPop 3.0.x, which didn't have project you could do:

    gremlin> g.V().has('name','marko').as('out','in').
                   select('out','in').
                     by(outE().count()).
                     by(inE().count())
    ==>[out:3,in:0]