问题标签 [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.
sql - 在 JSON 数组中查找元素的索引
我有一个看起来像这样的表:
还有其他几列与此问题无关。将它们存储为 JSON 是有原因的。
我要做的是查找具有特定艺术家姓名(完全匹配)的曲目。
我正在使用这个查询:
例如
但是,这会进行全表扫描,而且速度不是很快。我尝试使用一个函数创建一个 GIN 索引names_as_array(artists)
,并使用了'ARTIST NAME' = ANY names_as_array(artists)
,但是没有使用该索引并且查询实际上要慢得多。
sql - 查询 JSON 类型内的数组元素
我正在尝试测试json
PostgreSQL 9.3 中的类型。
我有一个json
名为data
的表中的列reports
。JSON 看起来像这样:
我想在表中查询与“objects”数组中的“src”值匹配的所有报告。例如,是否可以在数据库中查询所有匹配的报告'src' = 'foo.png'
?我成功编写了一个可以匹配的查询"background"
:
但由于"objects"
有一系列值,我似乎无法写出有效的东西。是否可以在数据库中查询所有匹配的报告'src' = 'foo.png'
?我已经查看了这些来源,但仍然无法得到它:
- http://www.postgresql.org/docs/9.3/static/functions-json.html
- 如何使用新的 PostgreSQL JSON 数据类型中的字段进行查询?
- http://michael.otacoo.com/postgresql-2/postgres-9-3-feature-highlight-json-operators/
我也尝试过这样的事情,但无济于事:
我不是 SQL 专家,所以我不知道我做错了什么。
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+(这是无模式设计的地方需要发挥作用)
提前感谢您的任何意见!
json - Postgres JSON 等效于 HSTORE 减法运算符
Postgres 的hstore
扩展有一个简洁的减法运算符:
在第一种情况下,它会删除在字符串数组中找到键的键/值对:在第二种情况下,它会从出现在第二个 hstore 中的第一个 hstore 中删除所有匹配的键/值对。
jsonb
新数据类型似乎不存在此运算符。有没有一种简单的方法来执行这些任务?
json - 如何查询空对象的 json 列?
查找某个 json 列包含空对象的所有行,{}
. 这对于 JSON 数组是可能的,或者如果我正在寻找对象中的特定键。但我只想知道对象是否为空。似乎找不到可以执行此操作的操作员。
sql - 如何将 PostgreSQL 9.4 的 jsonb 类型转换为浮点数
我正在尝试以下查询:
(+1.0 只是为了强制转换为浮动。我的实际查询要复杂得多,这个查询只是问题的一个测试用例。)
我得到错误:
如果我添加显式转换:
错误变为:
我知道大多数 jsonb 值不能转换为浮点数,但在这种情况下,我知道纬度都是 JSON 数字。
是否有一个函数可以将 jsonb 值转换为浮点数(或为不可转换返回 NULL)?
sql - JSONB 性能随着密钥数量的增加而下降
我正在 postgresql 中测试 jsonb 数据类型的性能。每个文档将有大约 1500 个非分层键。文档被展平。这是表格和文档的样子。
这是一个示例文档:
如您所见,该文档不包含层次结构,所有值都是整数。但是,有些将来会是文本。
- 行数:86,000
- 列数:2
- 文档中的键:1500+
当搜索某个键的特定值或按组执行时,性能非常缓慢。这个查询:
大约需要 2 秒才能完成。有什么方法可以提高 jsonb 文档的性能。
sql - 在 Postgres jsonb 中查询数组结构的正确索引是什么?
我正在尝试jsonb
在 Postgres 9.4 的 Postgres 字段中保留如下值:
我正在执行如下查询:
我将如何为该数据创建索引以供上述查询使用?对于几百万行,每行在该列中包含约 10 个事件,这听起来合理吗?
值得注意的是,我似乎仍在进行顺序扫描:
我猜这是因为我在查询中做的第一件事是将数据转换为 json 数组元素。
arrays - PostgreSQL 9.4 将 jsonb int 数组扩展为具有行号的表
试图围绕 postgresql 9.4 jsonb 进行思考,并希望得到一些帮助来弄清楚如何执行以下操作。
给定以下示例 jsonb:
需要:仅返回“name3”数组,作为具有返回签名的表
因此生成的数据将如下所示:
假设数组可以是除零以外的任何长度,并且保证“name3”存在。