PostgreSQL9.5和JSONB的强大功能

PostgreSQL9.5和JSONB的强大功能

[TOC]

介绍

原文地址

在PostgreSQL9.5中引入了新的JSONB功能,极大的增强了PG的NOSQL能力,本篇文章通过一些例子演示了如何使用这些强大的功能。
JSON特性从9.2版本开始引入,并在以后的新版本中不断的增强这些功能,

如果您能json的操作还不太了解,建议您看看以前的文章。

NoSQL with PostgreSQL 9.4 and JSONB
JSONB type performance in PostgreSQL 9.4
PostgreSQL anti-patterns: Unnecessary json/hstore dynamic columns

连接两个jsonb对象

在9.5中引入的新的JSONB操作符号

# select '{"a":3}'::jsonb || '{"b":4}'::jsonb;

     ?column?
------------------
 {"a": 3, "b": 4}
(1 row)

# select '{"a":3}'::jsonb || '{"b":"a6"}'::jsonb;

      ?column?
---------------------
 {"a": 3, "b": "a6"}
(1 row)

这个功能,相当于insert和update的功能的合并,如果在原来的对象中不存在新增加的jsonb子对象,则增加,否则,则更新为新的对象.并且,不区分新的对象的类型,

使用减号-删除对象

使用减号-删除已经存在的键值对中的一个对象

select '{"a":3}'::jsonb - 'a';

?column?
\----------
 {}
(1 row)

select '{"a":3,"b":"AAA"}'::jsonb - 'a';

   ?column?
\-----------
 {"b": "AAA"}
(1 row)

如果jsonb对象量个数组,则你可以用 减数字 的形式用索引来删除数组元素,数组以0开头


select '["AAA","BBB","CCC"]'::jsonb -1;
    ?column?
----------------
 ["AAA", "CCC"]
(1 row)

删除嵌套数组

select
'{"person":{"name":"张三","sex":"female","birthday":"1977-01-01"}}'::jsonb
\#- '{person,birthday}';
                   ?column?
-----------------------------------------------
 {"person": {"sex": "female", "name": "张三"}}
(1 row)

或者

select '{"person":{"name":"张三","sex":"female","birthday":"1977-01-01"}}'::jsonb \#- '{person,birthday}'::text[];
                   ?column?
-----------------------------------------------
 {"person": {"sex": "female", "name": "张三"}}
(1 row)

新函数jsonb_set

select jsonb_set('{"person":{"name":"张三"}}'::jsonb,
'{person,name}',
'"李四"'::jsonb,
false); 

          jsonb_set
------------------------------
 {"person": {"name": "李四"}}
(1 row)

select jsonb_set('{"person":{"name":"张三"}}'::jsonb,
'{person,sex}',
'"female"'::jsonb,
true); 

                   jsonb_set
-----------------------------------------------
 {"person": {"sex": "female", "name": "张三"}}

注意
1. 第三个参数必须是一个合法的jsonb类型,也就是说字符串类型必须先用双引号引起来,再用单引号引起来。
2.第四个的布尔参数,是如果不存在这个值,是否新增,如果为true,则当不存在这个键名和值时,会增加到对象中。

美化json

下面的例子不用多说,让显示的json更直观一些。

select jsonb_pretty(jsonb_set('{"person":{"name":"张三"}}'::jsonb,                                            '{person,sex}',                                                                                                       '"female"'::jsonb,                                                                                                    true));

       jsonb_pretty
--------------------------
 {                       +
     "person": {         +
         "sex": "female",+
         "name": "张三"  +
     }                   +
 }
(1 row)

总结

通过以上的例子,我们可以看到,postgreSQL也是一个NOSQL数据库,因此,如果我们能熟悉PostgreSQL,那么,我们就可以在一种数据库上同时使用NOSQL和SQL技术,以避免使用不同的产品及技术造成的产品复杂性的增加和后续维护的难度。

Use PostgreSQL,Use Everywhere.

时间: 2024-09-18 10:21:33

PostgreSQL9.5和JSONB的强大功能的相关文章

利用ASP实现三个强大功能(一)

利用ASP实现三个强大功能 1.为Web站点添加拼写检查功能 许多开发者都提出"如何对用户输入的内容进行拼写检查"的问题,这篇文章正好提供了一个有用的方法,讨论如何使用XDE拼写检查组件,它既可以当作拼写检查器,同时也可以做完一个字典.关于这个组件的一个好消息是:它能够在服务器端使用,或者做为一个Java Applet.但是有一点,这些方便之处不是免费的,它要花费大约100美元.然而,该组件提供了一个30天免费使用评估版本,所以在真正决定购买前,你可以仔细进行测试,认真考虑是否满足需要

利用ASP实现三个强大功能(目录)

利用ASP实现三个强大功能 为Web站点添加拼写检查功能 许多开发者都提出"如何对用户输入的内容进行拼写检查"的问题,这篇文章正好提供了一个有用的方法,讨论如何使用XDE拼写检查组件,它既可以当作拼写检查器,同时也可以做完一个字典.关于这个组件的一个好消息是:它能够在服务器端使用,或者做为一个Java Applet.但是有一点,这些方便之处不是免费的,它要花费大约100美元.然而,该组件提供了一个30天免费使用评估版本,所以在真正决定购买前,你可以仔细进行测试,认真考虑是否满足需要.

探索Flex和CSS的强大功能

Flex 最为强大的特性之一是其包含的极大的设计灵活性.这些灵活性大部分 可归功于 Adobe 用 Flex 实现 CSS.以我为例,我最近为一个新的 Adobe AIR 应用程序担任高级 UI 设计员,在我向全球 160,000 个用户正式发 布第一个公开发布版的若干天前,我收到了大量设计更改请求.虽然很多开发人 员都会将这些最后一分钟的请求看作是让人头痛的事,我却能在不足 20 分钟内 完成这些更改并将其放入版本控制,而这完全得益于 Flex 和 CSS 的强大功能 . 常用缩略语 UI:用

Chromebook的五个强大功能

  虽然搭载谷歌Chrome OS系统的笔记本价格便宜又好用,但是依然有许多消费者对Chromebook笔记本存有许多疑虑.他们会认为Chromebook无法运行Photoshop和Office,这会对自己的工作和生活带来许多不便.其实这种想法是错误的,今天我们就给大家Chromebook的五个强大功能,不管是Photoshop还是Office,它们都可以轻松应对. 1.通过Adobe Photoshop修改图片 Adobe和谷歌最近宣布将会联合开发支持Chromebook的在线Photosho

Gartner:AlphaGo凸显高级机器学习在监督式学习领域的强大功能

机器学习取得显著进展 虽然机器学习的基本概念由来已久,但如今正变得炙手可热.在斯坦福大学,机器学习是最受欢迎的研究生课程,报读该课程的学生多达760人.此外,全球领先的信息技术研究和顾问公司Gartner的研究显示,高级分析(涵盖机器学习)是业务分析软件市场内增速最快的细分领域. 高级机器学习算法由多种用于无监督与监督式学习的技术构成(如:深度学习.神经网络和自然语言处理等),并基于当前信息而运行.高级机器学习已经从此前提供基于算法的解决方案,向更具洞察力.自我引导与自主化转变.它与万物信息化(

三星Galaxy Note 4或9月发布 5个强大功能先睹为快

中介交易 SEO诊断 淘宝客 云主机 技术大厅 三星Galaxy Note 4或9月发布 5个强大功能先睹为快 5月16日消息,据国外媒体报道,传闻称三星下一代新机Galaxy Note 4会在今年9月发布,而三星日前向一个法国网站确认了新机的存在.以下5个新鲜并强大的功能很有可能出现在Galaxy Note 4,下面就来一睹为快. 1.防水功能. 据多家媒体报道,三星Galaxy Note 4将采用最先进的高性能型内置天线(H-IMA)设计,这样,用户就能确保智能机被不小心溅上水或是掉到水里后

利用ASP实现三个强大功能

为Web站点添加拼写检查功能 许多开发者都提出"如何对用户输入的内容进行拼写检查"的问题,这篇文章正好提供了一个有用的方法,讨论如何使用XDE拼写检查组件,它既可以当作拼写检查器,同时也可以做完一个字典.关于这个组件的一个好消息是:它能够在服务器端使用,或者做为一个Java Applet.但是有一点,这些方便之处不是免费的,它要花费大约100美元.然而,该组件提供了一个30天免费使用评估版本,所以在真正决定购买前,你可以仔细进行测试,认真考虑是否满足需要. 首先,访问http://mi

cURL库的强大功能和灵活的扩展性

原文:基于PHP的cURL快速入门 英文原文:http://net.tutsplus.com/tutorial ... for-mastering-curl/ 原文作者:Burak Guzel cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性,以及在PHP中如何运用它. 为什么要用 cURL? 是的,我们可以通过其他办法获取网页内容.大多数时候,我因为想偷懒,都直

利用ASP实现三个强大功能之一

为Web站点添加拼写检查功能 许多开发者都提出"如何对用户输入的内容进行拼写检查"的问题,这篇文章正好提供了一个有用的方法,讨论如何使用XDE拼写检查组件,它既可以当作拼写检查器,同时也可以做完一个字典.关于这个组件的一个好消息是:它能够在服务器端使用,或者做为一个Java Applet.但是有一点,这些方便之处不是免费的,它要花费大约100美元.然而,该组件提供了一个30天免费使用评估版本,所以在真正决定购买前,你可以仔细进行测试,认真考虑是否满足需要. 首先,访问http://mi