Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

PostgreSQL jsonb_each()

As funções JSON do PostgreSQL, como `jsonb_each()`, permitem que você manipule e recupere eficientemente os dados armazenados no formato JSONB. A função `jsonb_each()` retorna especificamente um conjunto de pares de valores-chave de um objeto JSONB. O uso de `jsonb_each()` pode simplificar o processamento de dados JSONB, oferecendo vantagens como iteração mais fácil sobre objetos JSONB e compatibilidade com os robustos recursos de indexação do PostgreSQL.

Uso

A função `jsonb_each()` é utilizada para decompor um objeto JSONB em pares de valores-chave individuais, facilitando o processamento e a consulta de dados JSONB. É especialmente útil quando você precisa iterar sobre dados JSONB armazenados em uma tabela do PostgreSQL. A função retorna um conjunto de registros, com `key` como texto e `value` como JSONB.

SELECT jsonb_each(jsonb_column)
FROM table_name;

Nessa sintaxe, `jsonb_each(jsonb_column)` extrai cada par de valores-chave da coluna JSONB especificada.

Exemplos

1. Extração básica

SELECT jsonb_each('{"name": "John", "age": 30}');

Este exemplo divide um objeto JSONB simples em pares de valores-chave individuais, retornando um conjunto com "name" como "John" e "age" como 30. A função é aplicada diretamente a um literal JSONB, útil para fins de demonstração.

2. Extraindo de uma tabela

SELECT jsonb_each(data)
FROM users_data;

Aqui, a função extrai pares de valores-chave da coluna `data` da tabela `users_data`, que armazena objetos JSONB para cada linha. Espera-se que a coluna `data` contenha objetos JSONB bem formados.

3. Usando jsonb_each() com a cláusula WHERE

SELECT key, value
FROM jsonb_each('{"name": "John", "age": 30, "city": "New York"}') AS kv
WHERE kv.key = 'city';

Este exemplo usa `jsonb_each()` em conjunto com uma cláusula `WHERE` para filtrar os resultados, retornando apenas o par chave-valor em que a chave é "city". A parte `AS kv` atribui um alias ao conjunto de resultados para facilitar a referência.

Dicas e práticas recomendadas

  • Use com tipos de dados JSONB. Certifique-se de que seus dados JSON sejam armazenados no formato `jsonb` para aproveitar os benefícios de indexação e desempenho.
  • Combine com uniões `LATERAL`. Ao trabalhar com tabelas, considere o uso de uniões `LATERAL` para processar dados JSONB com eficiência.
  • Filtro nas teclas. Use a cláusula `WHERE` para filtrar chaves específicas quando você precisar apenas de determinados pontos de dados.
  • Indexar colunas JSONB. Para otimizar o desempenho, considere a indexação de chaves JSONB consultadas com frequência. Use índices `GIN` para dados JSONB para acelerar as pesquisas de pares de valores-chave.
  • Considerações sobre o desempenho. Esteja ciente das possíveis implicações de desempenho ao lidar com objetos JSONB grandes, pois `jsonb_each()` pode afetar o desempenho da consulta.