【发布时间】:2019-09-13 13:54:02
【问题描述】:
我正在为我的表的 JSONB 列(名为 fields)使用以下架构。这些字段条目有几个。
{
"FIELD_NAME": {
"value" : "FIELD_VALUE",
"meta": {
"indexable": true
}
}
}
我需要找到包含这个对象的所有字段
"meta": {
"indexable": true
}
这是在 where 子句中使用 json_object_keys 的幼稚尝试,它不起作用,但说明了我正在尝试做的事情。
with entry(fields) as (values('{
"login": {
"value": "fred",
"meta": {
"indexable": true
}
},
"password_hash": {
"value": "88a3d1c7463d428f0c44fb22e2d9dc06732d1a4517abb57e2b8f734ce4ef2010",
"meta": {
"indexable": false
}
}
}'::jsonb))
select * from entry where fields->jsonb_object_keys(fields) @> '{"meta": {"indexable": "true"}}'::jsonb;
如何查询嵌套对象的值?我可以以某种方式将json_object_keys 的结果与表本身连接起来吗?
【问题讨论】:
-
元似乎出现在不同的层面。是这样吗?
-
@S-Man 不,这是一个错误。感谢您指出。固定。
-
你想要整个对象“{login: {...}}”还是只想要键“login”
-
@S-Man 我需要整个对象。
标签: sql postgresql jsonb