2013-07-23 1 views
66

В PostgreSQL 9.3 Beta 2 (?), Как мне создать индекс в поле JSON? Я попробовал его с помощью -> оператор, используемый для hstore, но получил следующее сообщение об ошибке:Как создать индекс в поле json в 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

- В заголовке – rlib

+2

В будущем, пожалуйста, ознакомьтесь с http://stackoverflow.com/tags/postgresql/info, раздел «спрашивать лучшие вопросы»; это может помочь получить более качественные ответы раньше с меньшим количеством раздражающих вопросов. –

ответ

114

Найдено: "Где? Вот в чем вопрос"

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

[Функции и операторы JSON] (http://www.postgresql.org/docs/9.3/static/functions-json.html) –

+25

На всякий случай вы ищете разницу: это '- >>' вместо '->'. Первый возвращает значение как текст, последний возвращает объект JSON. –

+20

Также важны двойные скобки. – Ron

 Смежные вопросы

  • Нет связанных вопросов^_^