【发布时间】:2018-03-29 03:08:03
【问题描述】:
我有下表:
CREATE TABLE trip
(
id SERIAL PRIMARY KEY ,
gps_data_json jsonb NOT NULL
);
gps_data_json 中的 JSON 包含一个行程对象数组,其中包含以下字段(示例数据如下):
- 模式
- 时间戳
- 纬度
- 经度
我正在尝试获取包含特定“模式”的所有行。
SELECT * FROM trip
where gps_data_json ->> 'mode' = 'WALK';
我很确定我使用了错误的 ->> 运算符,但我不确定谁告诉查询 JSONB 字段是一个对象数组?
样本数据:
INSERT INTO trip (gps_data_json) VALUES
('[
{
"latitude": 47.063480377197266,
"timestamp": 1503056880725,
"mode": "TRAIN",
"longitude": 15.450349807739258
},
{
"latitude": 47.06362533569336,
"timestamp": 1503056882725,
"mode": "WALK",
"longitude": 15.450264930725098
}
]');
INSERT INTO trip (gps_data_json) VALUES
('[
{
"latitude": 47.063480377197266,
"timestamp": 1503056880725,
"mode": "BUS",
"longitude": 15.450349807739258
},
{
"latitude": 47.06362533569336,
"timestamp": 1503056882725,
"mode": "WALK",
"longitude": 15.450264930725098
}
]');
【问题讨论】:
标签: postgresql jsonb postgresql-9.6