Skip to content

Instantly share code, notes, and snippets.

@wellingtonpgp
Last active October 19, 2021 03:25
Show Gist options
  • Save wellingtonpgp/430963fb13011de35b24438cbfaa3294 to your computer and use it in GitHub Desktop.
Save wellingtonpgp/430963fb13011de35b24438cbfaa3294 to your computer and use it in GitHub Desktop.
CREATE TABLE pessoa (
id serial NOT NULL,
nome text,
interesses jsonb,
informacoes_adicionais jsonb
);
INSERT INTO pessoa VALUES (1, 'João', '["futebol", "natação"]', '{"idade": 28, "time": "Chapecoense"}');
INSERT INTO pessoa VALUES (2, 'Maria', '["leitura", "programação", "dança"]', '{"idade": 39, "trabalha-com-programacao": true, "area": "back-end"}');
INSERT INTO pessoa VALUES (3, 'Ana', '["programação"]', '{"idade": 29, "trabalha-com-programacao": false, "area": "front-end", "areas-de-interesse": ["mobile", "design"]}');
SELECT nome, interesses, informacoes_adicionais->'trabalha-com-programacao' FROM pessoa
SELECT jsonb_array_elements_text(interesses) FROM pessoa WHERE nome = 'Maria'
SELECT nome, informacoes_adicionais->'area' as area FROM pessoa
WHERE
informacoes_adicionais ? 'area'
AND informacoes_adicionais->'trabalha-com-programacao' = 'true'
SELECT jsonb_array_elements_text(interesses) FROM pessoa
WHERE (informacoes_adicionais->'idade')::text::integer <= 28
SELECT * FROM pessoa WHERE interesses @> '["programação"]'
CREATE INDEX idx_trabalha_com_programacao ON pessoa ((informacoes_adicionais->'trabalha-com-programacao'));
UPDATE pessoa
SET informacoes_adicionais = jsonb_set(informacoes_adicionais, '{idade}', '"30"', TRUE)
WHERE id = 1
update pessoa
set informacoes_adicionais = informacoes_adicionais - 'Idade' || jsonb_build_object('idade', informacoes_adicionais->'Idade')
where informacoes_adicionais ? 'Idade'
returning *;
UPDATE pessoa SET informacoes_adicionais = informacoes_adicionais - 'idade';
UPDATE pessoa SET informacoes_adicionais = informacoes_adicionais || '{"country": "Egypt"}' WHERE informacoes_adicionais->>'area' = '';
https://andrewrosario.medium.com/utilizando-json-no-postgresql-com-jsonb-data-types-3c4d10dd4ea3
https://levelup.gitconnected.com/working-with-a-jsonb-array-of-objects-in-postgresql-d2b7e7f4db87
https://stackoverflow.com/questions/50095322/querying-data-in-postgresql-by-applying-filter-on-a-jsonb-column
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment