0

给定以下 JSON,有没有办法通过查询获取聚合内存(所有内存值的总和乘以每种情况下的实例数)jq

{
  "apps": [
    {
      "memory": 512,
      "instances": 3
    },
    {
      "memory": 256,
      "instances": 1
    },
    {
      "memory": 128,
      "instances": 6
    },
    {
      "memory": 1024,
      "instances": 2
    }
  ]
}

在此示例中,它应该执行以下操作:

512*3 + 256*1 + 128*6 + 1024*2

所以它应该4608总共给我。

仅作记录,我jq在 CentOS8 中使用命令行:

jq --version
jq-1.5
4

1 回答 1

1

单线解决方案:

reduce .apps[] as $x (0; . + ($x | .memory * .instances))

或者更优雅:

def sigma(s): reduce s as $x (0; . + $x);

sigma(.apps[] | .memory * .instances)
于 2020-03-11T18:53:09.480 回答