小编pac*_*aco的帖子

查询JSON类型中的数组元素

我正在尝试测试jsonPostgreSQL 9.3中的类型.
我在一个json名为data的表中调用了一列reports.JSON看起来像这样:

{
  "objects": [
    {"src":"foo.png"},
    {"src":"bar.png"}
  ],
  "background":"background.png"
}
Run Code Online (Sandbox Code Playgroud)

我想查询表中所有与'objects'数组中'src'值匹配的报告.例如,是否可以在数据库中查询匹配的所有报告'src' = 'foo.png'?我成功写了一个可以匹配的查询"background":

SELECT data AS data FROM reports where data->>'background' = 'background.png'
Run Code Online (Sandbox Code Playgroud)

但由于"objects"有一系列的价值观,我似乎无法写出有用的东西.是否可以在数据库中查询匹配的所有报告'src' = 'foo.png'?我查看了这些来源,但仍然无法得到它:

我也尝试过这样的事情,但无济于事:

SELECT json_array_elements(data->'objects') AS data from reports
WHERE  data->>'src' = 'foo.png';
Run Code Online (Sandbox Code Playgroud)

我不是SQL专家,所以我不知道我做错了什么.

sql postgresql json lateral jsonb

96
推荐指数
2
解决办法
12万
查看次数

使用JSON数据类型的嵌套记录数组查询组合

我正在开发一个利用Postgres JSON数据类型的Rails应用程序.我在一个名为data的表中调用了一个JSON列reports.假设我有多个这样的条目:

Entry 1: {"objects":[{"album": 1, "src":"fooA.png", "pos": "top"},   {"album": 2, "src":"barB.png", "pos": "top"}],   "background":"background.png"}
Entry 2: {"objects":[{"album": 1, "src":"fooA.png", "pos": "top"},   {"album": 2, "src":"barC.png", "pos": "top"}],   "background":"bacakground.png"}
Entry 3: {"objects":[{"album": 1, "src":"fooA.png", "pos": "middle"},{"album": 2, "src":"barB.png", "pos": "middle"}],"background":"background.png"}
Entry 4: {"objects":[{"album": 1, "src":"fooA.png", "pos": "top"},   {"album": 3, "src":"barB.png", "pos": "top"}],   "background":"backgroundA.png"}
Run Code Online (Sandbox Code Playgroud)

我想要做的是返回具有相同相册,src和背景的条目的不同组合(注意:在objects节点内,数组元素的顺序无关紧要).例如,查询应将条目1,3作为一个组匹配,条目2作为另一个组,等等.目标是找到前3个最常见的组合.我知道如何使用Ruby来做这件事,但我必须查询大量的条目样本,然后遍历所有条目.如果它可以处理这个任务,使用Postgres似乎更有效.我不足以让SQL专家知道这是否可行.

这是我正在寻找的结果.在objects条目中,条目1和3都包含{"album": 1, "src":"fooA.png"}, {"album": 2, "src":"barB.png"},以及两者都匹配backgrounds.我想将它们组合为一个计数为2的组合.

由于条目2与此条件下的任何条目都不匹配,因此它是另一个计数为1的组合.条目4也被认为是另一个计数为1的组合.因此,我所追求的结果将是:

ids  |  count
--------------
1,3  | 2 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql json postgresql-9.3

5
推荐指数
1
解决办法
9148
查看次数

标签 统计

json ×2

postgresql ×2

sql ×2

jsonb ×1

lateral ×1

postgresql-9.3 ×1