通过要打印的起始节点对路径进行分组 - Gremlin
Group paths by starting node to print - Gremlin
我对 Gremlin 语言还很陌生,仍在学习它的基础知识。我想对源节点的输出进行分组。
例如,以 ToyGraph 为例,使用
graph = TinkerFactory.createModern()
。假设对于每个软件,我想计算其创建者的平均年龄,我将不得不做类似的事情
g.V('software').in('created').mean()
,但是这会给我所有软件的所有创建者的平均值,我将如何获得以下形式的输出:
{softA:31.0,softB:40.6,...}。
我已经尝试了 group
子句和 aggregrate
,但不确定如何去做。
这是一个很好的例子,说明您何时希望使用 project() 步骤。 project() 步骤将创建一个具有指定标签的值映射,从图中的当前位置开始。在这种情况下,我们找到所有 software
个顶点,然后 project()
个名称,并从每个 software
个顶点中老化。我在下面举了一个例子,其中还包括它发现的所有 age
值,以表明它正在正确计算 mean()
。
g.V().hasLabel('software').project('software', 'ages', 'mean_age').
by().
by(__.in('created').values('age').fold()).
by(__.in('created').values('age').mean())
==>[software:v[3],ages:[29,32,35],mean_age:32.0]
==>[software:v[5],ages:[32],mean_age:32.0]
您确实可以为此使用 group
。查询的第一部分找到任何软件,然后小组计算创作者的平均年龄。
gremlin> g.V().hasLabel('software').
......1> group().
......2> by('name').
......3> by(__.in('created').values('age').mean())
==>[ripple:32.0,lop:32.0]
为了验证我们得到了正确的答案:
gremlin> g.V().hasLabel('software').
......1> group().
......2> by('name').
......3> by(__.in('created').values('age').fold())
==>[ripple:[32],lop:[29,32,35]]
我对 Gremlin 语言还很陌生,仍在学习它的基础知识。我想对源节点的输出进行分组。
例如,以 ToyGraph 为例,使用
graph = TinkerFactory.createModern()
。假设对于每个软件,我想计算其创建者的平均年龄,我将不得不做类似的事情
g.V('software').in('created').mean()
,但是这会给我所有软件的所有创建者的平均值,我将如何获得以下形式的输出:
{softA:31.0,softB:40.6,...}。
我已经尝试了 group
子句和 aggregrate
,但不确定如何去做。
这是一个很好的例子,说明您何时希望使用 project() 步骤。 project() 步骤将创建一个具有指定标签的值映射,从图中的当前位置开始。在这种情况下,我们找到所有 software
个顶点,然后 project()
个名称,并从每个 software
个顶点中老化。我在下面举了一个例子,其中还包括它发现的所有 age
值,以表明它正在正确计算 mean()
。
g.V().hasLabel('software').project('software', 'ages', 'mean_age').
by().
by(__.in('created').values('age').fold()).
by(__.in('created').values('age').mean())
==>[software:v[3],ages:[29,32,35],mean_age:32.0]
==>[software:v[5],ages:[32],mean_age:32.0]
您确实可以为此使用 group
。查询的第一部分找到任何软件,然后小组计算创作者的平均年龄。
gremlin> g.V().hasLabel('software').
......1> group().
......2> by('name').
......3> by(__.in('created').values('age').mean())
==>[ripple:32.0,lop:32.0]
为了验证我们得到了正确的答案:
gremlin> g.V().hasLabel('software').
......1> group().
......2> by('name').
......3> by(__.in('created').values('age').fold())
==>[ripple:[32],lop:[29,32,35]]