json jq从具有字段的最小值或最大值的数组中选择记录

e7arh2l6  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(59)

我有一个JSON,记录如下:

[
 {"number":1},
 {"number":3}
]

字符串
并且想要选择(过滤)具有字段“number”的最大值或最小值的记录。
我可以像这样得到“number”的最小值或最大值:
第一个月
(发射1)
我可以输出布尔值:

$ echo '[{"number":1},{"number":3}]' | jq '.[].number==([ .[].number ] | min)'
true
false


但当我尝试将其与select结合在一起时,它失败了:

$ echo '[{"number":1},{"number":3}]' | jq 'map(select(.[].number==([ .[].number ] | min)))'
jq: error (at <stdin>:1): Cannot index number with string "number"


我觉得我已经接近了,但是卡住了。我做错了什么?
提前感谢!

hts6caw3

hts6caw31#

([ .[].number ] | min) as $m| map(select(.number== $m))

字符串
参见https://jqplay.org/s/bUwtNrfAE-

第一个

要检索第一个最小项,请执行以下操作:

([ .[].number ] | min) as $m| first(.[]|select(.number== $m))

min_by、minimum_by等

jq有内置的max_bymin_by,如https://stedolan.github.io/jq/manual/#Builtinoperatorsandfunctions上的文档所示
有关maximal_by的定义,请参阅https://github.com/stedolan/jq/wiki/Cookbook#find-the-maximal-elements-of-an-array-or-stream上的jq cookbook。

相关问题