问题标签 [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 回答
83204 浏览

sql - 在 JSON 数组中查找元素的索引

我有一个看起来像这样的表:

还有其他几列与此问题无关。将它们存储为 JSON 是有原因的。

我要做的是查找具有特定艺术家姓名(完全匹配)的曲目。

我正在使用这个查询:

例如

但是,这会进行全表扫描,而且速度不是很快。我尝试使用一个函数创建一个 GIN 索引names_as_array(artists),并使用了'ARTIST NAME' = ANY names_as_array(artists),但是没有使用该索引并且查询实际上要慢得多。

0 投票
9 回答
160600 浏览

json - PostgreSQL引入JSONB的解释

PostgreSQL 刚刚引入了JSONB,它已经成为黑客新闻的热门话题。它与以前存在于 PostgreSQL 中的 Hstore 和 JSON 有何不同?

它的优点和局限性是什么?什么时候应该考虑使用它?

0 投票
2 回答
241346 浏览

sql - 查询 JSON 类型内的数组元素

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

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

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

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

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

0 投票
2 回答
5710 浏览

json - Postgresql JSONB 来了。现在用什么?商店?JSON?电子烟?

在经历了关系 DB/NoSQL 研究辩论之后,我得出的结论是,我将继续使用 PG 作为我的数据存储。该决定的很大一部分是宣布 JSONB 进入 9.4。我的问题是我现在应该做什么,从头开始构建一个应用程序,知道我想迁移到(我的意思是现在使用!)jsonb?对我来说,DaaS 选项将运行 9.3 一段时间。

据我所知,如果我错了,请纠正我,hstore 会运行得更快,因为我将对 hstore 列中的许多键进行大量查询,如果我要使用普通 json,我不会无法利用索引/GIN 等。但是我可以利用 json 嵌套,但是运行任何查询都会非常慢并且用户会感到沮丧。

那么,我是否围绕当前版本的 hstore 或 json 数据类型、“good ol” EAV 或其他东西构建我的应用程序?我应该以某种方式构建我的数据库和应用程序代码吗?任何建议将不胜感激。我敢肯定,在我们等待 PostgreSQL 的下一个正式版本时,其他人可能会面临同样的问题。

关于我要构建的应用程序的一些额外细节:

- 非常相关(以下有一个例外) -
强大的社交网络方面(群组、朋友、喜欢、时间线等) -
基于具有可变用户分配属性的单个对象,可能是 10 或 1000+(这是无模式设计的地方需要发挥作用)

提前感谢您的任何意见!

0 投票
2 回答
1080 浏览

json - Postgres JSON 等效于 HSTORE 减法运算符

Postgres 的hstore扩展有一个简洁的减法运算符:

在第一种情况下,它会删除在字符串数组中找到键的键/值对:在第二种情况下,它会从出现在第二个 hstore 中的第一个 hstore 中删除所有匹配的键/值对。

jsonb新数据类型似乎不存在此运算符。有没有一种简单的方法来执行这些任务?

0 投票
6 回答
81349 浏览

json - 如何查询空对象的 json 列?

查找某个 json 列包含空对象的所有行,{}. 这对于 JSON 数组是可能的,或者如果我正在寻找对象中的特定键。但我只想知道对象是否为空。似乎找不到可以执行此操作的操作员。

0 投票
7 回答
64471 浏览

sql - 如何将 PostgreSQL 9.4 的 jsonb 类型转换为浮点数

我正在尝试以下查询:

(+1.0 只是为了强制转换为浮动。我的实际查询要复杂得多,这个查询只是问题的一个测试用例。)

我得到错误:

如果我添加显式转换:

错误变为:

我知道大多数 jsonb 值不能转换为浮点数,但在这种情况下,我知道纬度都是 JSON 数字。

是否有一个函数可以将 jsonb 值转换为浮点数(或为不可转换返回 NULL)?

0 投票
1 回答
1155 浏览

sql - JSONB 性能随着密钥数量的增加而下降

我正在 postgresql 中测试 jsonb 数据类型的性能。每个文档将有大约 1500 个非分层键。文档被展平。这是表格和文档的样子。

这是一个示例文档:

如您所见,该文档不包含层次结构,所有值都是整数。但是,有些将来会是文本。

  • 行数:86,000
  • 列数:2
  • 文档中的键:1500+

当搜索某个键的特定值或按组执行时,性能非常缓慢。这个查询:

大约需要 2 秒才能完成。有什么方法可以提高 jsonb 文档的性能。

0 投票
2 回答
12417 浏览

sql - 在 Postgres jsonb 中查询数组结构的正确索引是什么?

我正在尝试jsonb在 Postgres 9.4 的 Postgres 字段中保留如下值:

我正在执行如下查询:

我将如何为该数据创建索引以供上述查询使用?对于几百万行,每行在该列中包含约 10 个事件,这听起来合理吗?

值得注意的是,我似乎仍在进行顺序扫描:

我猜这是因为我在查询中做的第一件事是将数据转换为 json 数组元素。

0 投票
2 回答
1497 浏览

arrays - PostgreSQL 9.4 将 jsonb int 数组扩展为具有行号的表

试图围绕 postgresql 9.4 jsonb 进行思考,并希望得到一些帮助来弄清楚如何执行以下操作。

给定以下示例 jsonb:

需要:仅返回“name3”数组,作为具有返回签名的表

因此生成的数据将如下所示:

假设数组可以是除零以外的任何长度,并且保证“name3”存在。