2

我正在尝试使用 Node Gremlin 和 AWS Neptune 查询顶点的属性,并在单个输出中获取通过“出”边连接到它的所有顶点及其所有属性。例如,如果我有一个“贝克”顶点,其边“烘烤”到两个“蛋糕”顶点,我想获得一个具有他所有属性的“贝克”对象以及两个“蛋糕”的数组顶点作为具有所有属性的对象。

我知道我可以使用 .project 有效地做到这一点,但我不想为任何顶点选择特定属性,因为我想要它们的所有属性。

我目前正在处理这样的查询:g.V(BakerId).as('Baker').out('bakes').as('Cake').select('Baker','Cake').by(valueMap(true)),但问题是这个查询给了我一个包含两个输出的列表,一个带有 Baker 和第一个 Cake,另一个带有相同的 Baker 和第二个 Cake。我想避免冗余并将其合并到一个输出中,而 Baker 只出现一次。

我也希望有一个足够通用的解决方案(或足够简单以轻松扩展)来处理更深层次的问题,以便在“蛋糕”顶点上的“外”边上做同样的事情,例如“蛋糕”->“制造”- ->“成分”,所以我可以得到一个面包师,每个蛋糕上只有一次,每个成分上只有一次,并且都具有所有属性。

4

1 回答 1

3

您可以使用两个project步骤并使用valueMap,因此您不需要 sespecifiy 属性:

g.V().hasLabel('Baker').
  project('Baker', 'Cake').
    by(valueMap(true)).
    by(out('bakes').
      project('Cake', 'Ingredients').
        by(valueMap(true)).
        by(out('madeOf').valueMap(true).
          fold()).fold())

示例:https ://gremlify.com/34e9o3r9gag

于 2020-11-30T21:39:13.823 回答