| 
                         jsonb键/值追加可通过||操作符,如下增加sex键/值: 
- mydb=> SELECT '{"name":"francs","age":"31"}'::jsonb ||  
 - '{"sex":"male"}'::jsonb;  
 - ?column?  
 - ------------------------------------------------  
 - {"age": "31", "sex": "male", "name": "francs"}  
 - (1 row) 
 
  
jsonb键/值的删除有两种方法,一种是通过操作符号-删除,另一种通过操作符#-删除指定键/值。 
通过操作符号-删除键/值如下: 
- mydb=> SELECT '{"name": "James", "email": "james@localhost"}'::jsonb  
 - - 'email';  
 - ?column?  
 - -------------------  
 - {"name": "James"}  
 - (1 row)  
 - mydb=> SELECT '["red","green","blue"]'::jsonb - 0;  
 - ["green", "blue"] 
 
  
第二种方法是通过操作符#-删除指定键/值,通常用于有嵌套json数据删除的场景,如下删除嵌套contact中的fax键/值: 
- mydb=> SELECT '{"name": "James", "contact": {"phone": "01234 567890", "fax": "01987 543210"}}'::jsonb #- '{contact,fax}'::text;  
 - ?column?  
 - ---------------------------------------------------------  
 - {"name": "James", "contact": {"phone": "01234 567890"}}  
 - (1 row) 
 
  
删除嵌套aliases中的位置为1的键/值,如下所示: 
- mydb=> SELECT '{"name": "James", "aliases": ["Jamie","The Jamester","J Man"]}'::jsonb #- '{aliases,1}'::text;  
 - {"name": "James", "aliases": ["Jamie", "J Man"]}  
 - (1 row) 
 
  
键/值的更新也有两种方式,第一种方式为||操作符,||操作符可以连接json键,也可覆盖重复的键值,如下修改age键的值: 
- mydb=> SELECT '{"name":"francs","age":"31"}'::jsonb ||  
 - '{"age":"32"}'::jsonb;  
 - ?column?  
 - ---------------------------------  
 - {"age": "32", "name": "francs"}  
 - (1 row) 
 
  
第二种方式是通过jsonb_set函数,语法如下: 
- jsonb_set(target jsonb, path text[], new_value jsonb[, create_missing boolean]) 
 
  
target指源jsonb数据,path指路径,new_value指更新后的键值,create_missing 值为 true表示如果键不存在则添加,create_missing 值为 false表示如果键不存在则不添加,示例如下: 
- mydb=> SELECT jsonb_set('{"name":"francs","age":"31"}'::jsonb,'{age}','"32"'::jsonb,false);  
 - jsonb_set  
 - mydb=> SELECT jsonb_set('{"name":"francs","age":"31"}'::jsonb,'{sex}','"male"'::jsonb,true); 
 
  
7、给JSONB类型创建索引 
这一小节介绍给jsonb数据类型创建索引,jsonb数据类型支持GIN索引,为了便于说明,假如一个json字段内容如下,并且以jsonb格式存储。 
- {  
 - "id": 1,  
 - "user_id": 1440933,  
 - "user_name": "1_francs",  
 - "create_time": "2017-08-03 16:22:05.528432+08"  
 - } 
 
  
假如存储以上jsonb数据的字段名为user_info,表名为tbl_user_jsonb,在user_info字段上创建GIN索引语法如下: 
CREATE INDEX idx_gin ON tbl_user_jsonb USING gin(user_info);                         (编辑:滁州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |