如何使用 jq 选择具有作为输入数组超集的数组字段的对象

问题描述 投票:0回答:1

一个示例是使用 jq 返回“field”属性中同时具有 1 和 3 的对象。

对象:

[
  {
    "field": [1, 2, 3]
  },
  {
    "field": [1, 2]
  },
  {
    "field": [3, 1, 4, 5]
  }
]

返回:

{
  "field": [1, 2, 3]
},
{
  "field": [3, 1, 4, 5]
}

我发现了许多从数组中选择至少包含一个值的对象的示例(例如,返回“field”属性包含 1 或 2 的对象),但我没有找到任何匹配所有值的示例。乍一看,jq 中的一些函数,例如

contains
看起来可能在这里很有用,但实际上有不同的行为。

jq
1个回答
0
投票

我最终使用

IN
sql like 运算符解决了这个问题。

.[] | select(.field as $field | [1, 3] | all(IN($field[])))

这是 jq 播放演示 - https://jqplay.org/s/MqCD2o_f-Y3

期待听到是否有其他方法可以进行此过滤

© www.soinside.com 2019 - 2024. All rights reserved.