Gremlin: имя свойства со значением c и динамическим - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь создать свойство вершины со значением stati c и Dynami c, используя выбранные свойства. Вот код:

g.V('%s').as('source')
 .until(or(hasLabel('target').has('v', '1'),loops().is(10)))
 .repeat(__.in())
 .outE('e').as('edge')
 .inV().as('u')
 .select('source')
 .property(single, 'v', '1')
 .property(single, union(constant('p_'),select('u').id()), select('e').properties('r').value())

Этот запрос предназначен для копирования свойства ребер как значения и идентификатора вершины как имени свойства с префиксом 'p_'. Копия работает, но имя свойства не работает, сохраняется только префикс «p _».

Есть идеи по поводу такого поведения? Я использую tinkerpop 3.4.3, такую ​​же версию Neptune.

Спасибо!

1 Ответ

0 голосов
/ 09 июля 2020

Шаг union () в этом обходе не вернет конкатенацию префикса и свойства, как вы надеялись. Вместо этого он вернет один обходчик для каждого элемента в union (). В данном случае один содержит "p_", один содержит id (), а другой - свойство "r".

К сожалению, у Gremlin нет функции конкатенации строк, которая sh это сделает за вас . См. Ниже:

Объединить результат Gramlin GraphTraversal со строкой

Поскольку вы используете Neptune, предлагаемое решение в этом ответе также не будет работать, поскольку Нептун не поддерживает лямбда-выражения в обход. К сожалению, в этом сценарии лучший способ выполнить sh, скорее всего, вернет данные в ваше приложение, объединит строки и затем обновит свойство.

...