带有边数组的 Gremlin 值图
Gremlin Value Map With Array of Edges
我正在尝试使用 Node Gremlin 和 AWS Neptune 查询顶点的属性,并通过 'out' 边和它们的所有属性以及单个输出中的所有顶点连接到它。例如,如果我有一个 'Baker' 顶点,边 'bakes' 到两个 'Cake' 顶点,我想得到一个 'Baker' 对象及其所有属性以及一个数组在他身上的两个 'Cake' 顶点作为具有所有属性的对象。
我知道我可以使用 .project 有效地做到这一点,但我不想 select 为任何顶点的特定属性,因为我想要它们的所有属性。
我目前正在处理这样的查询:g.V(BakerId).as('Baker').out('bakes').as('Cake').select('Baker','Cake').by(valueMap(true))
,但问题是这个查询给了我一个包含两个输出的列表,一个是面包师和第一个蛋糕,另一个是同样的面包师和第二个蛋糕。我想避免冗余并将其合并到单个输出中,贝克只出现一次。
我也希望有一个足够通用(或足够简单以轻松扩展)的解决方案来处理更深层次的问题,以便对 'Cake' 顶点上的 'out' 边执行相同的操作,例如'Cake' --> 'madeOf' --> 'Ingredient' 这样我就可以得到一个面包师,每个蛋糕都只放一次,每个蛋糕都放一次,每种配料每个放一次,所有的都放上它们属性也是如此。
您可以使用两个 project
步骤并使用 valueMap
,这样您就不需要重新指定属性:
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())
我正在尝试使用 Node Gremlin 和 AWS Neptune 查询顶点的属性,并通过 'out' 边和它们的所有属性以及单个输出中的所有顶点连接到它。例如,如果我有一个 'Baker' 顶点,边 'bakes' 到两个 'Cake' 顶点,我想得到一个 'Baker' 对象及其所有属性以及一个数组在他身上的两个 'Cake' 顶点作为具有所有属性的对象。
我知道我可以使用 .project 有效地做到这一点,但我不想 select 为任何顶点的特定属性,因为我想要它们的所有属性。
我目前正在处理这样的查询:g.V(BakerId).as('Baker').out('bakes').as('Cake').select('Baker','Cake').by(valueMap(true))
,但问题是这个查询给了我一个包含两个输出的列表,一个是面包师和第一个蛋糕,另一个是同样的面包师和第二个蛋糕。我想避免冗余并将其合并到单个输出中,贝克只出现一次。
我也希望有一个足够通用(或足够简单以轻松扩展)的解决方案来处理更深层次的问题,以便对 'Cake' 顶点上的 'out' 边执行相同的操作,例如'Cake' --> 'madeOf' --> 'Ingredient' 这样我就可以得到一个面包师,每个蛋糕都只放一次,每个蛋糕都放一次,每种配料每个放一次,所有的都放上它们属性也是如此。
您可以使用两个 project
步骤并使用 valueMap
,这样您就不需要重新指定属性:
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())