想要两个顶点离开 Gremlin 中的同一条边

Want two Vertices off the same Edge in Gremlin

我有这样的图表

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

也就是说,每个 'Event' 顶点都有两条传入边:一条终止于 'Engineer' 顶点,另一条终止于 'Producer' 顶点。但是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'))

也就是说,我选择了一个给定的生产者并获得事件和工程师,然后 return 关于每个顶点的一些细节。

我还希望生产者与同一查询中的事件保持一致,但我不确定该怎么做。

非常感谢任何帮助。

您正在寻找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'))

您可以查看 "live" 您的问题示例 here