Обход Gremlin. Вывод всех данных Edge, а также ввод / вывод идентификаторов вершин - PullRequest
0 голосов
/ 08 апреля 2019

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

Все, что у меня есть, это 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

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

1 Ответ

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

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

g.E("c6b4f3cb-f96e-cc97-dedb-e405771cb4f2").
  project('ekey1', 'inV', 'outV', 'label').
    by('ekey1').
    by(inV().id()).
    by(outV().id()).
    by(label).
...