Позвольте мне начать с правильного сценария для создания примера графика, чтобы другие могли легче следовать:
g = TinkerGraph.open().traversal()
g.addV('l1').
property(id, 2345432).
property('submit_time', new Date('Fri Apr 26 21:01:36 PDT 2019')).
addV('l2').
property(id, 409632904).
property('start_time', new Date('Fri Apr 26 22:01:36 PDT 2019')).
addV('l2').
property(id, 204824704).
property('start_time', new Date('Fri Apr 26 22:01:36 PDT 2019')).
addV('l2').
property(id, 307241008).
property('start_time', new Date('Fri Apr 26 23:01:36 PDT 2019')).
addE('e1').from(V(2345432)).to(V(409632904)).
addE('e1').from(V(2345432)).to(V(204824704)).
addE('e1').from(V(2345432)).to(V(307241008)).iterate()
И ваш запрос правильно отформатирован:
g.V().hasLabel("l2").
group().
by {(it.value("start_time").getYear() + 1900) + "/" +
(it.value("start_time").getMonth() + 1) + "/" +
it.value("start_time").getDate() + " " +
it.value("start_time").getHours()}
Теперь, если вы хотите добавить все вершины l1
, вы больше не можете использовать простой Map
для вашего результата. Каждой записи нужна своя карта, поэтому вы можете захватить третье поле. Таким образом, вам нужно развернуть карту и изменить ее с шагом project()
:
g.V().hasLabel("l2").
group().
by {(it.value("start_time").getYear() + 1900) + "/" +
(it.value("start_time").getMonth() + 1) + "/" +
it.value("start_time").getDate() + " " +
it.value("start_time").getHours()}.
unfold().
project('time','l2','l1').
by(keys).
by(values).
by(select(values).unfold().in('e1').dedup().fold())
Это даст:
gremlin> g.V().hasLabel("l2").
......1> group().
......2> by {(it.value("start_time").getYear() + 1900) + "/" +
......3> (it.value("start_time").getMonth() + 1) + "/" +
......4> it.value("start_time").getDate() + " " +
......5> it.value("start_time").getHours()}.
......6> unfold().
......7> project('time','l2','l1').
......8> by(keys).
......9> by(values).
.....10> by(select(values).unfold().in('e1').dedup().fold())
==>[time:2019/4/26 23,l2:[v[307241008]],l1:[v[2345432]]]
==>[time:2019/4/26 22,l2:[v[409632904],v[204824704]],l1:[v[2345432]]]