Я хочу найти путь между двумя вершинами, используя TRAVERSE. Но мне нужны только грани с определенным свойством, которое больше соответствующего свойства предыдущего края. Например, я хочу использовать ребра в порядке времени.Сравните свойства последовательных краев в TRAVERSE
В гном я могу это сделать:
select gremlin("current.as('x').outE('SentTo').as('c').inV.outE('SentTo').
filter{e, m -> m.get('c').getProperty('time') <= e.getProperty('time')}.
inV.loop('x'){it.object.getProperty('name') != 'John' && it.loops < 10}.
path.filter{it.last().getProperty('name') =='John'}")
FROM (SELECT FROM Person WHERE name = 'Bill')
Но почти каждый гном запрос в orientdb длится вечно, и данный запрос вылетает с ошибкой GC над головой.
Для сравнения, запрос ниже занимает около 5 секунд (мой дб около 1M вершин и 2M края):
SELECT
$path
FROM
(TRAVERSE
out('SentTo')
FROM
(SELECT FROM Person WHERE name = 'John')
WHILE
$depth < 10)
WHERE (SELECT FROM Person WHERE name = 'Bill')
Итак, я хочу знать, как изменить траверс запрос для сравнения времени между фронтами или (вряд ли), как оптимизировать Gremlin-запрос
Благодаря