2013-07-23 11 views
66

In PostgreSQL 9.3 Beta 2 (?), Come posso creare un indice su un campo JSON? Ho provato utilizzando l'operatore -> utilizzato per hstore ma ho ottenuto il seguente errore:Come creare l'indice sul campo json in Postgres 9.3

CREATE TABLE publishers(id INT, info JSON); 
CREATE INDEX ON publishers((info->'name')); 

ERROR: data type json has no default operator class for access method "btree" HINT: You must specify an operator class for the index or define a default operator class for the data type.

+6

- Nel titolo – rlib

+2

In futuro si prega di dare un'occhiata a http://stackoverflow.com/tags/postgresql/info, la sezione "porre domande migliori"; potrebbe aiutare a ottenere risposte migliori prima con meno domande fastidiose. –

risposta

114

Trovato: "Dove è il problema"

CREATE TABLE publishers(id INT, info JSON); 
CREATE INDEX ON publishers((info->>'name')); 
+1

[Funzioni e operatori JSON] (http://www.postgresql.org/docs/9.3/static/functions-json.html) –

+25

Nel caso in cui si cerchi la differenza: È '- >>' invece di '->'. Il primo restituisce il valore come testo, quest'ultimo restituisce un oggetto JSON. –

+20

Anche le doppie parentesi sono importanti. – Ron

Problemi correlati