遍历Gremlin,输出所有Edge细节以及输入/输出顶点ID

时间:2019-04-08 09:19:55

标签: gremlin tinkerpop tinkerpop3 graph-traversal amazon-neptune

我在构造gremlin查询时遇到麻烦,无法为我提供所有Edge的详细信息(标签,属性)以及与顶点相邻的Inv和OutV的ID(我不需要链接的顶点的更多信息,只是ID)。

我所拥有的只是Edge ID作为起点。

所以我的优势如下:

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 个答案:

答案 0 :(得分:2)

您可以使用project()来获取所需的内容:

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