Я думаю, что вы можете решить это с помощью coalesce()
.Вот небольшой примерный график (задавая вопросы о Gremlin, всегда лучше включать некоторые примерные данные в виде сценария Gremlin):
g.addV('post').property('createdDate',1).as('p1').
addV('post').property('createdDate',2).as('p2').
addV('user').as('u1').
addE('share').to('p2').property('createdDate',0)
Сначала выполните базовый порядок, используя вершину createdDate
:
gremlin> g.V().hasLabel('post').
......1> order().
......2> by('createdDate').
......3> valueMap(true)
==>[id:0,label:post,createdDate:[1]]
==>[id:2,label:post,createdDate:[2]]
Затем, используя coalesce()
в order()
, включите логику, которую вы описали:
gremlin> g.V().hasLabel('post').
......1> order().
......2> by(coalesce(inE('share').values('createdDate'),
......3> values('createdDate'))).
......4> valueMap(true)
==>[id:2,label:post,createdDate:[2]]
==>[id:0,label:post,createdDate:[1]]