Конкатенируйте результат Gremlin GraphTraversal со строкой - PullRequest
1 голос
/ 08 апреля 2020

В этом очень простом примере я пытаюсь добавить новую вершину, которая должна быть помечена как существующая, но с некоторым префиксом:

g.V(1).addV('prefix_' + label()).valueMap(true)

Что мне здесь не хватает? Это явно не String, но как бы это сериализовать?

gremlin> g.V(1).label()
==>Person

gremlin> g.V(1).constant(label())
==>[LabelStep]

1 Ответ

2 голосов
/ 08 апреля 2020

Gremlin сегодня не предоставляет встроенной функции конкатенации строк. Было бы хорошо, если бы это было так. Это означает, что ваша лучшая альтернатива сегодня - это использовать закрытие / лямбда в строке. Ниже приведен пример использования TinkerGraph и графа воздушных маршрутов.

gremlin> g.V(3).map {"prefix_" + it.get().label}.as('a').addV(select('a'))
==>v[60867]
gremlin> g.V(60867).label()
==>prefix_airport 

Обратите внимание, что не все базы данных графов допускают замыкания, поэтому нельзя полагать, что это будет работать универсально на любом бэкэнде Graph DB с поддержкой TinkerPop.

...