Digamos que eu tenha dados algo assim:
{
"18" : [ 2, 3, 3 ],
"28" : [ 2, 2, 7 ],
"45" : [ 3, 3, 5 ]
}
Gostaria de fazer uma jq
consulta que retornasse a chave/chaves do objeto com o array que contém um determinado valor. Por exemplo, 2 existe nas chaves "18" e "28", e 7 existe apenas em "28". É o nome do objeto pai que estou interessado em encontrar. Dei uma olhada no manual e não consigo encontrar um exemplo de algo assim.
Usando apenas
map_values
asselect
matrizes quecontain
o valor fornecido$val
, retirando as chaves dessas matrizes:contains()
retorna true se a matriz fornecida ([$val]
) estiver totalmente contida na entrada da função. Secontains()
retornar true para uma matriz na entrada,select()
retornará essa matriz.Estou usando
map_values()
para realizar essa seleção dos arrays associados às chaves no objeto de entrada. Isso me dará um objeto reduzido com os arrays que passam a seleção, e passar o resultado parakeys
me dará um array de chaves, que eu descompacto em um conjunto de strings soltas com o final[]
.Para os dados de entrada fornecidos, com 2 como o valor de
$val
, isso retornaEstou usando
--argjson
em vez de--arg
passar o valor 2 para a expressão,$val
pois os dados são numéricos, não strings.