Eu armazenei dados jsonb no PostgreSQL 13 assim:
[{"code": "OFFICIAL"}, {"code": "FULLTEXT"}]
como consultar o tipo de dados jsonb? Eu tentei assim:
select count(*) from test where tags::jsonb ? 'code';
select count(*) from test where tags::jsonb ->> 'code' = 'OFFICIAL';
select count(*) from test where tags::jsonb @> '{"code": "OFFICIAL"}';
ambos não poderiam funcionar. esta é a tabela DDL:
CREATE TABLE public.test (
id int8 NOT NULL GENERATED ALWAYS AS IDENTITY,
tags jsonb NULL,
CONSTRAINT test_pkey PRIMARY KEY (id)
);
o que devo fazer para que funcione? Também tentei assim:
select * from (
select jsonb_array_elements(tags) as tt from test
) a
where tt -> 'code' = 'OFFICIAL'
É um array de objetos, então você precisa fornecer um array para, por exemplo, o
@>
operador:Ou você pode usar uma expressão de caminho JSON: