PostgreSQL
Beginner
1 min read
JSONB Path Queries and Manipulation
Example
-- jsonb_path_query — SQL/JSON path language
SELECT jsonb_path_query(
'{"store":{"books":[{"title":"DB Design","price":29},{"title":"SQL","price":39}]}}',
'$.store.books[*].title'
);
-- Returns: "DB Design", "SQL"
-- Filter in path expression
SELECT jsonb_path_query(
'{"items":[{"sku":"A","qty":5},{"sku":"B","qty":1}]}',
'$.items[*] ? (@.qty > 2)'
);
-- @? — check if path exists (returns boolean)
SELECT payload @? '$.items[*] ? (@.qty > 2)' FROM events;
-- jsonb_set — update a nested value
UPDATE events
SET payload = jsonb_set(payload, '{total}', '200.00')
WHERE id = 1;
-- || — merge/overwrite keys
UPDATE users
SET preferences = preferences || '{"theme":"dark","lang":"fr"}'::jsonb
WHERE id = 42;
-- - operator — remove a key
UPDATE events
SET payload = payload - 'referral'
WHERE event_type = 'signup';
-- #- — remove a nested path
UPDATE events
SET payload = payload #- '{items,0}' -- remove first array element
WHERE id = 1;
-- jsonb_strip_nulls — remove null-valued keys
SELECT jsonb_strip_nulls('{"a":1,"b":null,"c":3}'); -- {"a":1,"c":3}
Related Resources
PostgreSQL Reference
Complete tag & property list
PostgreSQL How-To Guides
Step-by-step practical guides
PostgreSQL Exercises
Practice what you've learned
More in PostgreSQL