Acceder a un campo en una columna JSONB

Supongamos que tenemos la tabla items, con la columna properties que es una columna JSONB con una fila que contiene estos datos:

{
    "datetime": "2023-05-02T11:28:29.341176",
    "name": "Item 32",
    "type": "Petrol Engine",
    "price": 1043.25
}

Si quisíéramos acceder al campo name del item con id 12345, la consulta sería:

SELECT id, properties->>'name' FROM item WHERE id = 12345;

Modificar valor de un campo en una columna JSONB

Si en la columna mencionada anteriormente quisiéramos ahora cambiar el campo price de la fila de dicho item 12345, la consulta sería:

UPDATE item 
    SET properties = jsonb_set(
        properties, '{price}', 
        to_jsonb(1043.25)
    ) 
WHERE id = 12345;

Comprobar la existencia de un determinado campo

Si queremos saber si en una columna JSONB existe un determinado campo, por ejemplo para saber cuántas entradas tienen dicho campo guardado en su JSONB, podemos usar el operador ?:

SELECT COUNT(*) FROM item WHERE properties ? 'category';

La consulta anterior nos devolvería el número de filas de la tabla item cuya columna properties (que es JSONB) tiene un campo category.