Tag: jsonb

如何在Postgres 9.4中对JSONBtypes的列执行更新操作

仔细查看Postgres 9.4数据typesJSONB的文档,我不会立即明白如何在JSONB列上进行更新。 JSONBtypes和function的文档: http://www.postgresql.org/docs/9.4/static/functions-json.html http://www.postgresql.org/docs/9.4/static/datatype-json.html 举个例子,我有这个基本的表结构: CREATE TABLE test(id serial, data jsonb); 插入很容易,如: INSERT INTO test(data) values ('{"name": "my-name", "tags": ["tag1", "tag2"]}'); 现在,我将如何更新“数据”列? 这是无效的语法: UPDATE test SET data->'name' = 'my-other-name' WHERE id = 1; 这是logging在某处明显,我错过了? 谢谢。

PostgreSQL引入的JSONB的解释

PostgreSQL刚刚推出了JSONB ,它已经在黑客新闻的趋势。 如果有人能够解释它与以前在PostgreSQL中出现的Hstore和JSON有什么不同,那将是一件好事。 什么是优点和限制,什么时候应该有人考虑使用它?

Postgres:从JSONB字段中展开聚合的键/值对?

我在Postgres 9.4中使用下表: Column │ Type │ Modifiers ─────────────────┼──────────────────────┼────────────────────── id │ integer │ not null default practice_id │ character varying(6) │ not null date │ date │ not null pct_id │ character varying(3) │ total_list_size │ double precision │ not null star_pu │ jsonb │ 我有以下查询: SELECT date, AVG(total_list_size) AS total_list_size, json_object_agg(key, val) AS star_pu FROM […]

查询JSONtypes内的数组元素

我试图在PostgreSQL 9.3中testingjsontypes。 我有一个称为reports的json列称为data 。 JSON看起来像这样: {"objects":[{"src":"foo.png"},{"src":"bar.png"}],"background":"background.png"} 我想查询表中所有与“对象”数组中的“src”值相匹配的报告。 例如,是否可以查询所有与'src' = 'foo.png'匹配'src' = 'foo.png'报表的DB? 我成功地写了一个可以匹配"background"的查询: SELECT data AS data FROM reports where data->>'background' = 'background.png' 但是由于"objects"具有一系列的价值,我似乎无法写出一些有效的东西。 是否有可能查询所有符合'src' = 'foo.png' ? 我已经通过这些来源,但仍然无法得到它: http://www.postgresql.org/docs/9.3/static/functions-json.html 如何使用新的PostgreSQL JSON数据types中的字段进行查询? http://michael.otacoo.com/postgresql-2/postgres-9-3-feature-highlight-json-operators/ 我也尝试过这样的事情,但无济于事: SELECT json_array_elements(data->'objects') AS data from reports WHERE data->>'src' = 'foo.png'; 我不是SQL专家,所以我不知道我在做什么错。

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

我有一个如下所示的表格: CREATE TABLE tracks (id SERIAL, artists JSON); INSERT INTO tracks (id, artists) VALUES (1, '[{"name": "blink-182"}]'); INSERT INTO tracks (id, artists) VALUES (2, '[{"name": "The Dirty Heads"}, {"name": "Louis Richards"}]'); 还有其他几个与这个问题无关的列。 有一个理由把它们存储为JSON。 我想要做的是查找一个具有特定艺术家名字 (完全匹配)的曲目。 我正在使用这个查询: SELECT * FROM tracks WHERE 'ARTIST NAME' IN (SELECT value->>'name' FROM json_array_elements(artists)) 例如 SELECT * FROM tracks WHERE 'The […]