Следующие ребра, чьи свойства соответствуют одному в исходной вершине с Gremlin - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть график, и я хочу следовать по ребрам, которые содержат свойство, совпадающее со значением в вершине.Например,

vertex         -------edge ---------> vertex
vertValue: 123        vert: 123       vertValue: 463

Итак, в приведенном выше случае, скажем, я начинаю с первой вершины, я хочу следовать по краям, у которых свойство 'vert' равно его 'vertValue'.

Мне удалось сделать запрос, используя where, которому удается следовать по краю:

g.V(id).as('verts')
  .outE().values('vert')
  .where(eq('verts'))
    .by('vertValue')

Проблема в том, что я хочу вернуть фактический объект края.Тем не менее, поскольку мне нужно выполнить 'where' для значения 'vert' ребра, в запросе я делаю values('vert'), поэтому в результате я получаю только проверяемое значение, а не объект ребра,Я хочу сделать что-то вроде:

g.V(id).as('verts')
  .outE()
  .where(eq('verts'))
    .by('vertValue','vert')

Чтобы сравнить vertValue на вершине со значением vert на ребре.Но я не могу найти способ указать by для «входных» значений where.

Редактировать: Попытка:

g.V("95c4a57a-9262-45b7-a905-8cca95d3ebb6").as('v').
  outE().
  where(eq('v')).
    by('vert').
    by('vertValue')

Возвращает ошибку:

Ошибка выполнения запроса Gremlin: выберите один вариант: Получить проекцию: предоставленный путь или имя свойства path () не отображаются на значение.

g.V("95c4a57a-9262-45b7-a905-8cca95d3ebb6").as('v').
  outE().
  where(eq('v')).
    by('vertValue').
    by('vert')

возвращает пустой массив!

1 Ответ

0 голосов
/ 05 февраля 2019

Вы очень близко подошли к решению.Это:

g.V(id).as('v').
  outE().
  where(eq('v')).
    by('vert').
    by('vertValue')
...