Postgres 9.4 jsonb 查询基本运算符
Postgres 9.4 jsonb queries basic operators
有什么方法可以查询 Postgres 中某些 table 中的 jsonb 字段,这些字段基本上等于 table 到 Mongodb 查询运算符(列出这里 https://docs.mongodb.org/manual/reference/operator/query-comparison/)
我希望能够在 postgres table 中存储一些 json 对象,例如:
{"power": 200},
{"power": 400},
{"power": 0},
{"power": 146297},
如果我按照现在的方法
SELECT * FROM mytable where json_field ->> 'power' < '2';
我得到了功率 0 和功率 146297 的行...
是否有一些文档说明了如何做
gt, gte, lt, lte, eq, 不等于,在数组中,不在数组中
您需要转换 ->>
个字符串结果值:
WITH mytable(json_field) AS ( VALUES
('{"power": 200}'::JSONB),
('{"power": 400}'::JSONB),
('{"power": 0}'::JSONB),
('{"power": 146297}'::JSONB)
)
SELECT * FROM mytable where (json_field->>'power')::INTEGER < 2;
结果是:
json_field
--------------
{"power": 0}
(1 row)
文档在 postgresql page 上。文档指出 ->>
运算符 returns 字符串,您的右手操作数也是一个字符串,因此结果是正确的。
要完成您想做的事,您必须将从 json 返回的结果转换为整数:
SELECT * FROM mytable where (json_field ->> 'power')::int < '2';
请注意括号是必需的,因为 'power' 不是整数。
有什么方法可以查询 Postgres 中某些 table 中的 jsonb 字段,这些字段基本上等于 table 到 Mongodb 查询运算符(列出这里 https://docs.mongodb.org/manual/reference/operator/query-comparison/)
我希望能够在 postgres table 中存储一些 json 对象,例如:
{"power": 200},
{"power": 400},
{"power": 0},
{"power": 146297},
如果我按照现在的方法
SELECT * FROM mytable where json_field ->> 'power' < '2';
我得到了功率 0 和功率 146297 的行...
是否有一些文档说明了如何做
gt, gte, lt, lte, eq, 不等于,在数组中,不在数组中
您需要转换 ->>
个字符串结果值:
WITH mytable(json_field) AS ( VALUES
('{"power": 200}'::JSONB),
('{"power": 400}'::JSONB),
('{"power": 0}'::JSONB),
('{"power": 146297}'::JSONB)
)
SELECT * FROM mytable where (json_field->>'power')::INTEGER < 2;
结果是:
json_field
--------------
{"power": 0}
(1 row)
文档在 postgresql page 上。文档指出 ->>
运算符 returns 字符串,您的右手操作数也是一个字符串,因此结果是正确的。
要完成您想做的事,您必须将从 json 返回的结果转换为整数:
SELECT * FROM mytable where (json_field ->> 'power')::int < '2';
请注意括号是必需的,因为 'power' 不是整数。