Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

PostgreSQL jsonb_each()

Les fonctions JSON de PostgreSQL, telles que `jsonb_each()`, permettent une manipulation et une récupération efficaces des données stockées au format JSONB. La fonction `jsonb_each()` renvoie spécifiquement un ensemble de paires clé-valeur d'un objet JSONB. L'utilisation de `jsonb_each()` peut simplifier le traitement des données JSONB, offrant des avantages tels que l'itération plus facile sur les objets JSONB et la compatibilité avec les capacités d'indexation robustes de PostgreSQL.

Utilisation

La fonction `jsonb_each()` est utilisée pour décomposer un objet JSONB en paires clé-valeur individuelles, ce qui facilite le traitement et l'interrogation des données JSONB. Elle est particulièrement utile lorsque vous devez itérer sur des données JSONB stockées dans un tableau PostgreSQL. La fonction renvoie un ensemble d'enregistrements, avec `key` en tant que texte et `value` en tant que JSONB.

SELECT jsonb_each(jsonb_column)
FROM table_name;

Dans cette syntaxe, `jsonb_each(jsonb_column)` extrait chaque paire clé-valeur de la colonne JSONB spécifiée.

Exemples

1. Extraction de base

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

Cet exemple décompose un objet JSONB simple en paires clé-valeur individuelles et renvoie un ensemble dont le "nom" est "John" et l'"âge" est 30. La fonction est appliquée directement à un littéral JSONB, ce qui est utile à des fins de démonstration.

2. Extraction à partir d'un tableau

SELECT jsonb_each(data)
FROM users_data;

Ici, la fonction extrait des paires clé-valeur de la colonne `data` du tableau `users_data`, qui stocke des objets JSONB pour chaque ligne. La colonne `data` doit contenir des objets JSONB bien formés.

3. Utilisation de jsonb_each() avec la clause WHERE

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

Cet exemple utilise `jsonb_each()` en conjonction avec une clause `WHERE` pour filtrer les résultats, ne renvoyant que la paire clé-valeur dont la clé est "city". La partie `AS kv` attribue un alias à l'ensemble de résultats pour une référence plus facile.

Conseils et bonnes pratiques

  • A utiliser avec les types de données JSONB. Assurez-vous que vos données JSON sont stockées au format `jsonb` pour bénéficier des avantages de l'indexation et des performances.
  • Combinez avec les jointures `LATERAL`. Lorsque vous travaillez avec des tableaux, pensez à utiliser les jointures `LATERAL` pour traiter efficacement les données JSONB.
  • Filtre sur les touches. Utilisez la clause `WHERE` pour filtrer des clés spécifiques lorsque vous n'avez besoin que de certains points de données.
  • Indexer les colonnes JSONB. Pour optimiser les performances, envisagez d'indexer les clés JSONB fréquemment interrogées. Utilisez les index `GIN` pour les données JSONB afin d'accélérer les recherches de paires clé-valeur.
  • Considérations relatives à la performance. Soyez conscient des implications potentielles en termes de performances lorsque vous traitez de gros objets JSONB, car `jsonb_each()` peut affecter les performances de la requête.