我有一个表uploads_table
:
| upload_id|价值|
| --------------|--------------|
| A| [{“doc_name”:“doc1a”,“doc_type”:“pdf”},{“doc_name”:“doc1b”,“doc_type”:“}]|
| B| [{“doc_name”:“doc2a”,“doc_type”:“csv”},{“doc_name”:“doc2b”,“doc_type”:“}]|
| C| [{“doc_name”:“doc3a”,“doc_type”:[PDF]|
什么是Postgres查询,以返回所有来自uploads_table
的upload_id, value
,其中至少有一个“doc_type”为“pdf”。
预期结果:
| upload_id|价值|
| --------------|--------------|
| A| [{“doc_name”:“doc1a”,“doc_type”:“pdf”},{“doc_name”:“doc1b”,“doc_type”:“}]|
| C| [{“doc_name”:“doc3a”,“doc_type”:[PDF]|
2条答案
按热度按时间myzjeezk1#
使用
jsonb
“contains”运算符**@>
**:当然,这是假设
value
的类型是jsonb
,这是应该的。(value)
上的GIN索引将使其快速。使用更专业的
jsonb_path_ops
索引,速度更快:参见:
相关:
35g0bw712#
你可以在PostgreSQL中使用内置函数jsonb_array_elements。查询语句如下:
结果如下图所示: