创建具有指定索引的对象

Create an object with specified indexes

我正在尝试使用 jq 为每个对象使用 for 循环。 Elasticsearch 生成的示例输入

{
  "took": 202,
  "timed_out": false,
  "aggregations": {
    "aggsDateHistogram": {
      "buckets": [
        {
          "key": 1465974236000,
          "search": {
            "value": 14
          }
        },
        {
          "key": 1465975137000,
          "search": {
            "value": 16
          }
        }
      ]
    }
  }
}

我想要一个对象,该对象具有键值和来自搜索的值索引的对应值。

{ "date": .aggregations.aggsDateHistogram.buckets[].key, "value": .aggregations.aggsDateHistogram.buckets[].search.value }

这给了我一个对象,但有笛卡尔积,但我只想拥有像

这样的值
key[1] : search[1].value
key[2] : search[2].value

所以你想产生这个输出?

[
  {
    "key": 1465974236000,
    "value": 14
  },
  {
    "key": 1465975137000,
    "value": 16
  }
]

以下将做到这一点:

.aggregations[].buckets 
  | map({key: .key, value: .search.value})

从终端:

jq '.aggregations[].buckets 
   | map({key: .key, value: .search.value})' input.json

这里有一个稍微简单的解决方案

[ .aggregations[].buckets[] | {key, value:.search.value} ]