Postgresql 9.4 JSONB 类型,Select 按日期范围
Postgresql 9.4 JSONB type, Select by date range
我正在从 Mongodb 迁移,并查看如何使用 jsonb 类型按范围 select,我每天有 ~2.880.000 条记录,我需要按站点和日期字段查询数据库, 我知道 select 按时间范围
SELECT * FROM stations WHERE date >= '2014-02-01' AND date < '2014-03-01 AND station = 'AA01'
但是不知道如何查询JSONB数据类型的数据库
CREATE TABLE stations (
id SERIAL PRIMARY KEY,
event JSONB
);
INSERT INTO test(event) VALUES('{"station":"AA01","value":2.31,"date":"2015-01-23 18:02:48.906569865 +0000 UTC"}');
INSERT INTO test(event) VALUES('{"station":"AA02","value":4.1,"date":"2015-01-23 19:02:48.906569865 +0000 UTC"}');
我也想知道如何获得良好的性能方法,谢谢。
SELECT *
FROM stations
WHERE to_date(event->>'date', 'YYYY-MM-DD')
BETWEEN '2014-02-01'
AND '2014-03-01'
AND event->>'station' = 'AA01';
我正在从 Mongodb 迁移,并查看如何使用 jsonb 类型按范围 select,我每天有 ~2.880.000 条记录,我需要按站点和日期字段查询数据库, 我知道 select 按时间范围
SELECT * FROM stations WHERE date >= '2014-02-01' AND date < '2014-03-01 AND station = 'AA01'
但是不知道如何查询JSONB数据类型的数据库
CREATE TABLE stations (
id SERIAL PRIMARY KEY,
event JSONB
);
INSERT INTO test(event) VALUES('{"station":"AA01","value":2.31,"date":"2015-01-23 18:02:48.906569865 +0000 UTC"}');
INSERT INTO test(event) VALUES('{"station":"AA02","value":4.1,"date":"2015-01-23 19:02:48.906569865 +0000 UTC"}');
我也想知道如何获得良好的性能方法,谢谢。
SELECT *
FROM stations
WHERE to_date(event->>'date', 'YYYY-MM-DD')
BETWEEN '2014-02-01'
AND '2014-03-01'
AND event->>'station' = 'AA01';