postgresql – How to filter and get specific keys from JSON objects array

I have a JSONB field containing a value in this structure:

[
    {
        "type": "small",
        "name": "Josh",
        "greeting": "Hello buddy!",
        "hobby": "billiards",
        "place": "Barcelona"
    },
    {
        "type": "big",
        "name": "Aziz",
        "greeting": "Hey man!",
        "hobby": "tennis",
        "place": "Montpellier"
    }
]

I want to include this output if type is equal to “big”:

{
    "greeting": "Hey man! How're you doing Aziz?",
    "place": "Montpellier"
}
  1. In the first row, I combined two values into one with some additional words.
  2. I don’t want my whole output to be empty if there isn’t type value
    equal to “big”. Instead, output values of type value equal to
    “small” as a fallback.
  3. If there is not a fallback with type equal to “small”, then output an empty string or NULL value but without Nulling the whole query result. Or preferably, not include these keys if no value is present.

I know I can combine values into one by using CONCAT but don’t know how to build this query and integrate it. I can’t loop through the array and output the values of the object that matches my filter. Tried CASE but still wasn’t able to get the result I want.

I use PostgreSQL 13.