Je recherche des documents et / ou des exemples pour les nouvelles fonctions JSON dans PostgreSQL 9.2.
Plus précisément, compte tenu d'une série d'enregistrements JSON:
[
{name: "Toby", occupation: "Software Engineer"},
{name: "Zaphod", occupation: "Galactic President"}
]
Comment pourrais-je écrire le SQL pour trouver un enregistrement par son nom?
Dans vanilla SQL:
SELECT * from json_data WHERE "name" = "Toby"
Le manuel de développement officiel est assez rare:
- http://www.postgresql.org/docs/devel/static/datatype-json.html
- http://www.postgresql.org/docs/devel/static/functions-json.html
Mettre à jour I
J'ai rassemblé un résumé détaillant ce qui est actuellement possible avec PostgreSQL 9.2 . En utilisant certaines fonctions personnalisées, il est possible de faire des choses comme:
SELECT id, json_string(data,'name') FROM things
WHERE json_string(data,'name') LIKE 'G%';
Mise à jour II
J'ai maintenant déplacé mes fonctions JSON dans leur propre projet:
PostSQL - un ensemble de fonctions pour transformer PostgreSQL et PL / v8 en un magasin de documents JSON totalement génial
sql
json
postgresql
postgresql-9.2
postgresql-9.3
Toby Hede
la source
la source
Réponses:
Postgres 9.2
Je cite Andrew Dunstan sur la liste pgsql-hackers :
Cela ne l'empêche pas de fournir un exemple d'implémentation en PLV8 qui devrait résoudre votre problème.
Postgres 9.3
Offre un arsenal de nouvelles fonctions et opérateurs pour ajouter "json-processing".
La réponse à la question d'origine dans Postgres 9.3:
Exemple avancé:
Pour les tables plus grandes, vous souhaiterez peut-être ajouter un index d'expression pour augmenter les performances:
Postgres 9.4
Ajouts
jsonb
(b pour "binaire", les valeurs sont stockées en tant que types Postgres natifs) et encore plus de fonctionnalités pour les deux types. En plus des index d'expression mentionnés ci-dessus,jsonb
prend également en charge les index GIN, btree et hash , le GIN étant le plus puissant d'entre eux.json
etjsonb
les types et fonctions de données .Le manuel va jusqu'à suggérer:
Accentuation mienne.
Les performances bénéficient d'améliorations générales des index GIN.
Postgres 9.5
jsonb
Fonctions et opérateurs complets . Ajoutez plus de fonctions à manipulerjsonb
sur place et à afficher.la source
Avec Postgres 9.3+, utilisez simplement l'
->
opérateur. Par exemple,SELECT data->'images'->'thumbnail'->'url' AS thumb FROM instagram;
voir http://clarkdave.net/2013/06/what-can-you-do-with-postgresql-and-json/ pour de beaux exemples et un tutoriel.
la source
data
un document JSON:{images:{thumbnail:{url:'thumbnail.jpg'}}}
. Faites-nous savoir à quoi ressemblent vos données et quelle requête échoue.SELECT data->'%'->'thumbnail'->'url' AS thumb FROM instagram;
::json
comme décrit dans d'autres articles. Notez également que l'->
opérateur lèvera une erreur si vous essayez d'accéder à une propriété qui n'existe pas (c'est-à-dire si vous avez échelonné JSON):ERROR: column "jsonPropertyYouWant" does not exist
Avec postgres 9.3, utilisez -> pour l'accès aux objets. 4 exemple
seed.rb
rails c
Retour
Vous pouvez continuer l'imbrication
revenir
la source