首页 > 解决方案 > 为 Gremlin 麻袋实施 'max'

问题描述

我有一个父子关系,其中边缘有一个数字属性。我想sack取这个属性的最大值,通过遍历的reset来携带,需要的时候引用。

当前的实现如下所示:

g.withSack(1).V(33131).outE("parent_to").values("order").max().unfold().sack(Operator.max)
    .project("count","sack")
        .by(V().count())
        .by(sack())

Gremlify

有没有更清洁的方法来做到这一点?这里的投影只是为了举例。

标签: gremlinamazon-neptune

解决方案


我认为您sack几乎按照预期的方式使用了它。在每个遍历器的基础上累积一个值。我不太清楚你为什么使用unfoldasmax是一个减少障碍。您也可以使用sack(assign),因为该步骤只会产生一个值max

我经常sack以类似的方式(例如此处所示)来计算一组值的总和。

g.withSack(0).
  V().has('code','SAF').
      repeat(outE().sack(sum).by('dist').inV()).times(2).limit(10).
      order().by(sack()).
      sack().path().
      by('code').by('dist').by('code').by('dist').by('code').by()
[SAF,549,DFW,190,AUS,739]
[SAF,549,DFW,225,IAH,774]
[SAF,549,DFW,630,BNA,1179]
[SAF,549,DFW,729,ATL,1278]
[SAF,549,DFW,1120,FLL,1669]
[SAF,549,DFW,1170,IAD,1719]
[SAF,549,DFW,1190,DCA,1739]
[SAF,549,DFW,1210,BWI,1759]
[SAF,549,DFW,1560,BOS,2109]
[SAF,549,DFW,3030,ANC,3579]

推荐阅读