postgresql - 从 PostgreSQL 中的 JSON 数组索引和查询 int 值
问题描述
我想创建一个包含jsonb
数据类型的列的表。索引和查询数组中的 int 值的正确方法是什么?
入口:
{
"list": [
{
"type": "FOO",
"value": 1000
},
{
"type": "BAR",
"value": 200
}
]
}
2个不同的查询,我想找到所有包含列表项的条目,
- 类型 = 'FOO' AND 值 > 500
- 值 > 100
解决方案
您将无法索引任何>
比较,但可以索引相等条件:
CREATE INDEX ON tabname USING gin (jsonbcol jsonb_path_ops);
这可以由如下查询使用:
SELECT id FROM tabname
WHERE jsonbcol @> '{ "list": [ {"type": "FOO"} ] }';
如果您计划在数据库中大量使用 JSON 属性,那么您做错了。将要索引的属性保留在常规数据库列中。在您的情况下,这将是一个单独的表,它使用外键链接到您的表,因此每行可以有多个条目。
推荐阅读
- java - 有没有办法使用扫描仪来设置数组中的维数?
- ios - 如何在 swift 中使用 messageui 库修复此错误?
- html - 如何通过悬停更改图像?
- sql - 如何获取所有员工的缺勤天数?SQL 服务器
- nginx - Nginx - 基于正则表达式匹配隐藏/屏蔽/更改日志中的值
- swift - 可展开和可折叠的 TableViewCells
- purescript - 具有和不具有类型类约束的 Eq 实例
- r - PCA 中的错误(表,quanti.sup =,graph = FALSE):以下变量不是定量的
- angular - 如何使用 Angular Material 订阅单选按钮组的 valueChange
- android - Android:使用 BottomNavigationView、NavController 和 SafeArgs 恢复片段