У меня возникли проблемы с построением запроса 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
Но я не могу на всю жизнь решить, как объединить их в одно.
Вы можете использовать project()
, чтобы получить то, что вы ищете:
g.E("c6b4f3cb-f96e-cc97-dedb-e405771cb4f2").
project('ekey1', 'inV', 'outV', 'label').
by('ekey1').
by(inV().id()).
by(outV().id()).
by(label).
Я не уверен, почему я написал «в одну сторону», учитывая ваш вопрос. Я думаю, что project()
— лучший способ получить желаемый результат.
Спасибо за это Маллетт. Вы упомянули «в один конец». Если у вас есть шанс, не могли бы вы дать другое решение с некоторыми плюсами и минусами любого из них. Большое спасибо гл.