Estoy buscando algunos documentos y / o ejemplos para las nuevas funciones JSON en PostgreSQL 9.2.
Específicamente, dada una serie de registros JSON:
[
  {name: "Toby", occupation: "Software Engineer"},
  {name: "Zaphod", occupation: "Galactic President"}
]
¿Cómo escribiría el SQL para encontrar un registro por nombre?
En vainilla SQL:
SELECT * from json_data WHERE "name" = "Toby"
El manual de desarrollo oficial es bastante escaso:
- http://www.postgresql.org/docs/devel/static/datatype-json.html
 - http://www.postgresql.org/docs/devel/static/functions-json.html
 
Actualización I
He reunido una esencia que detalla lo que actualmente es posible con PostgreSQL 9.2 . Usando algunas funciones personalizadas, es posible hacer cosas como:
SELECT id, json_string(data,'name') FROM things
WHERE json_string(data,'name') LIKE 'G%';
Actualización II
Ahora he movido mis funciones JSON a su propio proyecto:
PostSQL : un conjunto de funciones para transformar PostgreSQL y PL / v8 en una increíble tienda de documentos JSON
                    
                        sql
                                json
                                postgresql
                                postgresql-9.2
                                postgresql-9.3
                                
                    
                    
                        Toby Hede
fuente
                
                fuente

Respuestas:
Postgres 9.2
Cito a Andrew Dunstan en la lista de hackers pgsql :
No le impide proporcionar una implementación de ejemplo en PLV8 que debería resolver su problema.
Postgres 9.3
Ofrece un arsenal de nuevas funciones y operadores para agregar "procesamiento json".
La respuesta a la pregunta original en Postgres 9.3:
Ejemplo avanzado:
Para tablas más grandes, es posible que desee agregar un índice de expresión para aumentar el rendimiento:
Postgres 9.4
Agrega
jsonb(b para "binario", los valores se almacenan como tipos nativos de Postgres) y aún más funcionalidad para ambos tipos. Además de los índices de expresión mencionados anteriormente,jsonbtambién admite índices GIN, btree y hash , siendo GIN el más potente de estos.jsonyjsonblos tipos de datos y funciones .El manual llega a sugerir:
El énfasis en negrita es mío.
El rendimiento se beneficia de las mejoras generales de los índices GIN.
Postgres 9.5
jsonbFunciones completas y operadores. Agregue más funciones para manipularjsonben el lugar y para mostrar.fuente
Con Postgres 9.3+, solo usa el
->operador. Por ejemplo,SELECT data->'images'->'thumbnail'->'url' AS thumb FROM instagram;ver http://clarkdave.net/2013/06/what-can-you-do-with-postgresql-and-json/ para ver algunos buenos ejemplos y un tutorial.
fuente
datacon un documento JSON:{images:{thumbnail:{url:'thumbnail.jpg'}}}. Háganos saber cómo se ven sus datos y qué consulta está fallando.SELECT data->'%'->'thumbnail'->'url' AS thumb FROM instagram;::jsoncomo se describe en otras publicaciones. También tenga en cuenta que el->operador arrojará un error si intenta acceder a una propiedad que no existe (es decir, si ha escalonado JSON):ERROR: column "jsonPropertyYouWant" does not existCon postgres 9.3 use -> para acceder a objetos. 4 ejemplo
seed.rb
rieles c
devoluciones
Puedes continuar anidando
regreso
fuente