2017-02-06 9 views
0

У меня есть база данных postgresql, в которой у меня есть столбец, содержащий объект jsonb.Извлечение пары ключ-значение из столбца jsonb PostGreSQL?

Я столкнулся с ситуацией, когда мне нужно извлечь одну пару ключ-значение из моего json-объекта. В настоящее время я не знаю и не смог найти примеров того, как это делается.

У меня есть следующая таблица:

---------------------------------------------- 
| id | did | timestamp | data | db_timestamp | 
---------------------------------------------- 

Столбец данных является мой объект JSON и один пример того, что она содержит в:

{"n": 336372148490, "ac": 22.0, "al": 119.0, "be": 346.3, "la": 55.69707492, "lo": 12.58713834, "sa": 5, "sp": 2.6100767, "provider": "gps"} 

Так что я хочу сделать, это написать запрос, в котором я ищу одну пару ключ-значение. I В настоящее время у вас есть следующий запрос:

SELECT data WHERE did = '357139052424715' and timestamp < 1466642640000 

Я хочу извлечь одну пару ключ-значение. Как изменить указанный выше запрос на извлечение только "la": 55.69707492?

ответ

1

вы можете сделать это так:

SELECT data->>'la' WHERE did = '357139052424715' and timestamp < 1466642640000 

Дополнительные примеры см:

http://clarkdave.net/2013/06/what-can-you-do-with-postgresql-and-json/

+0

Могу ли я делать сравнения с этими данными, а? Например, 'SELECT data - >> 'la' WHERE did = '357139052424715' и timestamp <1466642640000, а data - >> 'la' = '? – Zeliax

+0

Да, вот как вы бы отфильтровывали –

+0

Спасибо. Это именно то, что мне нужно! – Zeliax