Гремлин: убрать повторяющиеся родительские ребра - PullRequest
0 голосов
/ 15 марта 2019

Мой запрос:

g.V().has("a","123").has("s","1").has("e","p").has("r","e-1").repeat(outE().where(values("startTime").is(gte("2018-12-15"))).where(values("endTime").is(lte("2018-12-16"))).otherV().simplePath()).emit().path().by(valueMap("a","s")).fold()

Я получаю результат как

A -> B

A -> B -> C

A -> B -> C -> D

Как удалить первые 2 строки с выхода?

Требуемый выход: A -> B ->C -> D

Спасибо

1 Ответ

1 голос
/ 15 марта 2019

Во-первых, не выводить пути.

edgeTraversal = outE().
           has("startTime", gte("2018-12-15")).
           has("endTime", lte("2018-12-16")).simplePath(); []
g.V().has("a","123").has("s","1").has("e","p").has("r","e-1").
  repeat(edgeTraversal.clone().inV()).
    until(__.not(edgeTraversal)).
  path().
    by(valueMap("a","s")).fold()

Без дочерней переменной:

g.V().has("a","123").has("s","1").has("e","p").has("r","e-1").
  repeat(outE().
           has("startTime", gte("2018-12-15")).
           has("endTime", lte("2018-12-16")).simplePath().inV()).
    until(__.not(outE().
                   has("startTime", gte("2018-12-15")).
                   has("endTime", lte("2018-12-16")).simplePath())).
  path().
    by(valueMap("a","s")).fold()
...