Table des matières

jq

jq a lightweight and flexible command-line JSON processor.

Play with jq

members.json:

[
 {
  "member_id": 123,
  "loans":[
   {
    "date": "123",
    "media": [
     { "title": "foo" },
     { "title": "bar" }
    ]
   },
   {
    "date": "456",
    "media": [
     { "title": "foo" }
    ]
   }
  ]
 },
 {
  "member_id": 456,
  "loans":[
   {
    "date": "789",
    "media": [
     { "title": "foo"}
    ]
   }
  ]
 }
]

Howto count occurrence of "grouped by key=value" with jq?

https://stackoverflow.com/questions/69423726/howto-count-occurrence-of-grouped-by-key-with-jq/

Sans group_by

jq '"foo" as $title | .[] | {
  id: .member_id,
  $title,
  count: [.loans[].media[] | select(.title == $title)] | length
}' members.json
{
  "id": 123,
  "title": "foo",
  "count": 2
}
{
  "id": 456,
  "title": "foo",
  "count": 1
}

Avec group_by

jq  'map(
         (.member_id) as $m
        | .loans[].media[]
        | select(.title=="foo")
        | {id: $m, title: .title}
        )
    |group_by(.id)[]
    |.[0] + { count: length }
' members.json