Я собираюсь продемонстрировать это с помощью набора данных TrateerPop Grateful Dead:
gremlin> g = TinkerFactory.createGratefulDead().traversal()
==>graphtraversalsource[tinkergraph[vertices:808 edges:8049], standard]
Базовый подход просто предусматривает использование coalesce()
в вашем by()
модуляторе для group()
, который в основном создает if-затем, как поток управления:
gremlin> g.V().hasLabel('song').
......1> group().
......2> by(values('performances').
......3> coalesce(is(lt(5)).constant("x<5"),
......4> is(lt(10)).constant("5=>x<10"),
......5> constant(">=10"))).
......6> by(count())
==>[x<5:319,>=10:227,5=>x<10:38]
Обратите внимание, что by(count())
был просто добавлен для облегчения просмотра результатов.Очевидно, что если вам нужны фактические вершины в группировке, вы можете просто удалить эту строку 6.
Обратите внимание, что более подробное объяснение этого подхода можно найти в Gremlin Recipes .