温馨提示:本文翻译自stackoverflow.com,查看原文请点击:amazon neptune - Want two Vertices off the same Edge in Gremlin
amazon-neptune gremlin

amazon neptune - 希望在Gremlin的同一Edge上关闭两个顶点

发布于 2020-04-30 15:25:07

我有一个这样的图

V('Producer')-E('RESPONSIBLE_PRODUCER)->V('Event')<-E('INSPECTED')-V('Engineer')
V('Event')<-E('ALIGNED_PRODUCER')-V('Producer')

也就是说,每个“事件”顶点都有两个传入边:一个终止于“工程”顶点,另一个终止于“生产者”顶点。但是,生产者顶点的功能因边标签而异。

我想获得原始的生产者,事件,工程师和终止的生产者。

我有此gremlin代码:

g.V().hasLabel('Producer').
as('responsible').
has('ProdId', 1234567).
out("RESPONSIBLE_PRODUCER").hasLabel('Event').as('event').
in("INSPECTED").hasLabel('Engineer').as('engineer').
select('responsible', 'event', 'engineer').
by(valueMap('name')).by(valueMap('name')).by(valueMap('name'))

也就是说,我选择了给定的生产者,并获得事件和工程师,然后返回有关每个顶点的一些详细信息。

我还希望生产者在同一查询中与事件对齐,但不确定如何执行此操作。

任何帮助是极大的赞赏。

查看更多

提问者
fiacre
被浏览
23
gremlify 2020-02-22 19:20

您正在寻找project

g.V().has('Producer', 'ProdId', '1').as('r').
out("RESPONSIBLE_PRODUCER").hasLabel('Event').
project('responsible', 'event', 'engineer', 'aligned').
by(select('r').values('name')).
by(values('name')).
by(in('INSPECTED').values('name')).
by(in('ALIGNED_PRODUCER').values('name'))

您可以在此处看到问题的“实时”示例