问题标签 [jsonb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3963 浏览

arrays - 如何从 PostgreSQL 中的 json 数组中获取具有唯一编号的元素?

我有一张桌子bank_accounts

它在jsonb列中有一些 JSON:

我正在使用 jsonb_array_elements 获取一个用户的帐户列表:

这一切都很棒。但是如何让每一行都有一个唯一的 id?我想将每一行映射到一个休眠对象,但是我在这样做时遇到了麻烦,因为我找不到让每一行都具有唯一 ID 的方法。

0 投票
2 回答
9337 浏览

sql - 如何在postgres中过滤json的任何键的值

我有一个表users,其中有一个jsonb名为data. 我必须检索在该列中具有与给定字符串匹配的值的所有用户。data例如:

我想检索具有data匹配值的任何用户'b2',在这种情况下将是'user2'

知道如何以优雅的方式做到这一点吗?我可以从data所有用户中检索所有密钥并手动创建查询,但这既不快速也不优雅。

此外,我必须检索匹配的键和值,但首先要做的是。

0 投票
1 回答
353 浏览

peewee - 使用 Peewee ORM 加入对 Postgres 9.4 JSONB 字段的查询

我在我的一个项目中使用 peewee 并且来自 Django 背景,我非常喜欢它。

我计划在 postgres 9.4 中广泛使用新引入的 JSONB。但是,我不知道如何使用 JSONB 键执行连接操作。

我假设一个例子对整个社区来说都是极好的。

0 投票
1 回答
1278 浏览

sql - 如何从 json 中进行文本查询

我需要搜索结果为"Achieved". 数据是一个 JSON 对象,text位于 Postgres 9.4 的列中。

我尝试使用:

但是,单词的实例"Achieved"不一定在与 相同的位置匹配"Legal"。正如您在下面的示例数据中看到的那样,在该Goals Array部分中,可能会有关于进度的更新 -##我的评论是为了说明。(您需要删除这些以获得有效的 JSON 格式!)

查询很好地提取了状态"Legal",但第二个条件"Achieved"可能与最新的状态更新不匹配。

我已经阅读了 JSON 中的文本查询,但我对这种结构不知所措。我把它放在 jsonlint.com 中,它验证为正确的 JSON。有人可以帮忙吗?

这是完整的查询,后面是数据样本:

中的示例值notes.data

0 投票
1 回答
3659 浏览

postgresql - 在 PostgreSQL 上从 JSON 创建时间戳索引

我在 PostgreSQL 上有一个表,其中有一个名为的字段datajsonb其中包含很多对象,我想创建一个索引来加快查询速度。我使用几行来测试数据(只有 15 行),但我不想在将来遇到查询问题。我从 Twitter API 获取数据,所以一周后我得到了大约 10gb 的数据。
如果我做正常的索引

CREATE INDEX ON tweet((data->>'created_at'));

我得到一个文本索引,如果我做:

Create index on tweet((CAST(data->>'created_at' AS timestamp)));

我明白了

ERROR: functions in index expression must be marked IMMUTABLE

我试图让它“不可变”设置时区

date_trunc('seconds', CAST(data->>'created_at' AS timestamp) at time zone 'GMT')

但我仍然收到“不可变”错误。那么,如何从 JSON 中完成时间戳索引?我知道我可以用日期制作一个简单的列,因为它可能会在一段时间内保持不变,但我想学习如何做到这一点。

0 投票
1 回答
3949 浏览

postgresql - postgres9.4 循环通过 jsonb:如何选择 key:val 对的 vals

此 plpgsql 脚本从一组 jsonb 对象键:值对中选择键,但是如何为每对选择值?

应该可以作为手册页http://www.postgresql.org/docs/9.4/static/functions-json.html指示返回值是 setof 键文本,值文本。这篇Postgres - array for loop回答了数组的问题。还尝试了 jsonb_each() 和 jsonb_array_elements() 将迭代器更改为 jsonb,出现错误“无法从对象中提取元素”

0 投票
1 回答
388 浏览

ruby-on-rails - Ruby on Rails 验证 jsonb 中的日期(哈希)

我的 Postgres 数据库中有 jsonb 列,并且我有一个带有 pref["date"] date_field 的表单供用户使用。

如果转换为日期会下降,我如何转换为日期并验证 user.pref["date"] 是没有错误的日期?

0 投票
1 回答
5784 浏览

sql - 在 PostgreSQL 中使用 json 数组中的索引

参考原始 stackoverflow 问题,我试图将 gin 索引应用于 Postgres 9.4 中数组对象中的键,但我没有得到第一个答案中所述的结果。

你能纠正错误吗?

我遵循的步骤已写在下面。

第 1 部分:创建表和索引

第 2 部分:查询

此查询给出空结果。
我也尝试使用jsonb_path_opsGIN 索引。

替代索引和查询:

0 投票
1 回答
1887 浏览

json - WHERE BETWEEN 子句中的 PostgreSQL jsonb 值

我的数据库表(a_table)中有 jsonb 字段,其中包含 int 值,例如:

我即将使用 WHERE 子句按此字段(“ghk”)创建带有过滤器的 SELECT:

我应该如何创建这样的查询?到目前为止找不到关于 jsonb 使用的好教程。

提前致谢!

编辑 我找到了这个解决方案:

这是对的吗?

0 投票
1 回答
2965 浏览

json - postgresql jsonb 在第二级包含键:值

postgresql 中是否有可能在第二级查询 key:value

例如,一行的 jsonb 字段如下所示:

我想使用 v_id 值查询这一行,例如:

但是,此查询无效。如何实现这样的查询?

编辑:

根据@CraigRinger 的评论:

这里的重点是我不知道顶级键,我想说“对于任何对象,是否有一个内部对象具有以下键和以下值”。