500 МБ не должно быть настолько большим, чтобы требовать параметр --stream, который обычно замедляет работу. Вот быстрое и эффективное (*) решение, которое не использует опцию потоковой передачи, а вместо этого использует общую c ориентированную на поток функцию max_by, определенную следующим образом:
# max_by(empty;1) yields null
def max_by(s; f):
reduce s as $s (null;
if . == null then {s: $s, m: ($s|f)}
else ($s|f) as $m
| if $m > .m then {s: $s, m: $m} else . end
end)
| .s ;
С этим в нашем наборе инструментов мы можем просто написать:
max_by(.results[].date; .)
Это, конечно, предполагает, что существует поле «результатов», содержащее массив из JSON объектов. (**) Из постановки задачи может показаться, что это предположение не всегда выполняется, поэтому вы, вероятно, захотите изменить какой бы подход вы ни выбрали соответственно (например, проверив, есть ли поле результатов, имеет ли оно значение массива и т. c.)
(*) Использование max_by / 2 здесь более эффективно, как с точки зрения пространства, так и времени, чем использование встроенного max_by / 1.
(**) Отсутствие подполя «дата» не имеет значения, поскольку null
меньше каждого числа.