Обход гремлина: вывести все детали ребра, а также входные / выходные идентификаторы вершин.

У меня проблемы с построением запроса gremlin, чтобы предоставить мне все детали Edge (метку, свойства), а также идентификаторы Inv и OutV, примыкающих к Vertex (мне не нужна дополнительная информация из связанных Vertex, только идентификатор ).

Все, что у меня есть, это Edge ID в качестве отправной точки.

Итак, мой Edge выглядит следующим образом:

Label: "CONTAINS"
id: c6b4f3cb-f96e-cc97-dedb-e405771cb4f2
keys:
key="ekey1", value="e1"
key="ekey2", value="e2"

inV has id 50b4f3cb-f907-c31c-6284-1a3463fd72b9

outV has id 7cb4f3cb-d9a2-1398-61d7-9339be34833b

Я хочу только один запрос, который вернет мне что-то вроде -

"CONTAINS", "c6b4f3cb-f96e-cc97-dedb-e405771cb4f2", {ekey1=e1, ekey2=e2, ...}, "50b4f3cb-f907-c31c-6284-1a3463fd72b9", "7cb4f3cb-d9a2-1398-61d7-9339be34833b"

Я могу получить информацию в отдельных запросах, т.е.

g.E("c6b4f3cb-f96e-cc97-dedb-e405771cb4f2").bothV()
==>v[50b4f3cb-f907-c31c-6284-1a3463fd72b9]
==>v[7cb4f3cb-d9a2-1398-61d7-9339be34833b]
g.E("c6b4f3cb-f96e-cc97-dedb-e405771cb4f2").valueMap()
==>{ekey1=e1, ekey2=e2}
g.E("c6b4f3cb-f96e-cc97-dedb-e405771cb4f2").label()
==>CONTAINS

Но я не могу придумать, как объединить их в одно.


person Hallam    schedule 08.04.2019    source источник


Ответы (1)


Вы можете использовать project(), чтобы получить то, что ищете:

g.E("c6b4f3cb-f96e-cc97-dedb-e405771cb4f2").
  project('ekey1', 'inV', 'outV', 'label').
    by('ekey1').
    by(inV().id()).
    by(outV().id()).
    by(label).
person stephen mallette    schedule 08.04.2019
comment
Спасибо за это, Маллет. Вы упомянули один способ. Если у вас будет возможность, не могли бы вы дать другое решение с некоторыми плюсами и минусами. Большое спасибо, парень. - person Hallam; 09.04.2019
comment
Я не уверен, почему я написал именно так, учитывая ваш вопрос. Я думаю, что project() - лучший способ получить желаемый результат. - person stephen mallette; 09.04.2019