我有一个如下所示的数据库表:
---------------------------------------
| id | json_array (jsonb) |
---------------------------------------
| 1 | [{"a": 1}, {"a": 5}, {"a": 1}] |
| 2 | [{"a": 2}] |
| 3 | [{"a": 1}] |
---------------------------------------
我想使用PostgreSQL的JSON查询功能来选择JSON\u数组中的某些子字典,例如字典中的a:1。
输出应为
------------------
| id | json_dict |
------------------
| 1 | {"a": 1} |
| 1 | {"a": 1} |
| 3 | {"a": 1} |
------------------
以下查询适用于每个数组中的第一个元素,但我想检查所有元素:
sql prettyprint-override">SELECT id, json_array -> 0
FROM my_table
WHERE json_array -> 0 -> "a" = 1;
演示:db
您可以使用jsonb\u array\u elements()将数组元素扩展为每行一个元素。可以对其进行筛选:
SELECT
id,
elems.value
FROM
mytable,
jsonb_array_elements(data) elems
WHERE
elems.value = '{"a":1}'
假设这是一个JSONB列,您可以使用@
select *
from my_table
where json_array @> '[{"a": 1}]';
联机示例:https://rextester.com/SACUDU51598
如果希望所有对象都作为行,则需要取消阵列的测试:
select t.id, e.obj
from data t
cross join jsonb_array_elements(json_array) as e(obj)
where e.obj = '{"a": 1}'
在线示例:https://rextester.com/DLG27322
最近升级到使用PostgreSQL 9.3.1来利用JSON功能。在我的表中,我有一个json类型列,其结构如下: 就问题而言,这只是虚拟数据。 是否可以根据id查询电子邮件数组中的特定项目 差不多:“返回id=123的电子邮件)”?
问题内容: 最近升级到使用PostgreSQL 9.3.1来利用JSON功能。在我的表中,我有一个json类型列,其结构如下: 就问题而言,这只是伪数据。 是否可以根据id在emails数组中查询特定项目? 差不多:“返回电子邮件,其中id = 123)”? 问题答案: 是的,这是可能的: 是您的表名,是JSON列的名称。
我尝试使用函数JSON\u array\u elements()卸载JSON数组,并尝试使用JSON\u array\u length(field\u name)计算数组的元素,但没有成功。我使用的是PostgreSQL 9.4.5。 我想查询元素“name”的结果,这是json类型数组field crew | json[]上保存的数据。
本文向大家介绍用MongoDB查询数组元素?,包括了用MongoDB查询数组元素?的使用技巧和注意事项,需要的朋友参考一下 查询数组元素时,MongoDB更好。让我们使用以下语法查询数组元素- 上面的语法将返回所有在数组字段中具有“ yourValue”值的文档。 为了理解这个概念,让我们用文档创建一个集合。使用文档创建集合的查询如下- 在method的帮助下显示集合中的所有文档。查询如下- 以下
如果s/he在元值数组中,我很难查询当前用户的cpt。 返回false或空数组。取决于之前是否设置过字段。 我试过将compare设置为相等,但也不起作用。可能是因为该值位于数组中。 查询应返回在键中具有当前用户id的所有帖子。 重要提示: 允许用户的
问题内容: 我有一个像这样的数据结构 我需要查询“电话号码”中的所有元素,并且必须检查这些电话号码是否已存在于另一个集合中。我的数据结构的下一条路径是 是否可以在Firestore中进行任何索引编制? 问题答案: 如官方文档中所示: 尽管Cloud Firestore可以存储阵列,但可以 查询阵列成员或更新单个阵列元素。 如果只想获取整个数组,则需要像这样迭代: 但是请注意,即使对象作为数组存储在