1. 程式人生 > >postgres之jsonb屬性的簡單操作

postgres之jsonb屬性的簡單操作

jsonb的一些簡單操作(增刪改查)

  1. 更新操作(attributes屬性為jsonb型別)
    方法定義:
    jsonb_set(target jsonb, path text[], new_value jsonb[, create_missing boolean])
    引數:
    target:目標(jsonb型別的屬性)
    path :路徑,如果jsonb是陣列‘{0,a}’表示在下標是0的位置更新a屬性,如果不是陣列,是物件,則寫‘{a}’即可
    new_value:新值
    選填引數:create_missing:jsonb欄位不存在f1屬性時建立,預設為true
    返回:更新後的jsonb

官方文件給出的示例(jsonb陣列):

jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0,f1}','[2,3,4]', false)
結果:[{"f1":[2,3,4],"f2":null},2,null,3]

jsonb_set('[{"f1":1,"f2":null},2]', '{0,f3}','[2,3,4]')
結果:[{"f1": 1, "f2": null, "f3": [2, 3, 4]}, 2]

更新jsonb屬性:

-- attributes為jsonb型別欄位(物件轉成的json)
原值:{"a":"1"}
update user_test set attributes =
jsonb_set(attributes,'{a}','"0"'::jsonb, false) where id = '8888'; 執行後:{"a":"0"}

為jsonb插入屬性:

-- 執行後attributes欄位中添加了platform:baidu
update user_test set attributes =  attributes::jsonb || '{"platform":"baidu"}'::jsonb;
或者:
update user_test set attributes = jsonb_set(attributes, '{platform}','"baidu"')
;

查詢

select value from json_each('{"a":"foo", "b":"bar"}') where key = 'a'
select * from json_object_keys('{"a":"foo", "b":"bar"}')
select * from json_object_keys('{"f1":"abc","f2":{"f3":"a", "f4":"b"}}')
select  * from json_object_keys(from ci_type.attributes);--錯誤
select * from to_jsonb('"a":1,"b":2') 
 select '{"a":1,"b":2}'::json->>'b' --獲取jsonb中對應鍵的值(文字)

 --select * from json_each( to_jsonb(select distinct attributes from ci_type ) )
 --select to_jsonb(select distinct attributes from ci_type ) 
 
--擴充套件欄位提取相應屬性的值
  select  attributes :: json->>'instanceType' from ci_type 
-- 屬性值轉為jsonb
select to_jsonb('id:'||id::text) from ci

--jsonb新增屬性,刪除屬性
select '{"a":"foo", "b":"bar"}'::jsonb || '{"c":"fc", "d":"bdd"}'::jsonb--新增
select '{"a":"foo", "b":"bar"}'::jsonb -'c'-'d'-'a'||'{"a":2}'--刪除
select '{"a": "b","c":3}'::jsonb - 'a'

相關推薦

postgresjsonb屬性簡單操作

jsonb的一些簡單操作(增刪改查) 更新操作(attributes屬性為jsonb型別) 方法定義: jsonb_set(target jsonb, path text[], new_value j

Elastic Search 學習入門ES的簡單操作命令

curl是利用URL語法在命令列方式下工作的開原始檔傳輸工具,使用curl可以簡單實現常見的get/post請求。簡單的認為是可以在命令列下面訪問url的一個工具。在centos的預設庫裡面是有curl工具的,如果沒有請yum安裝即可。(以下操作均是基於ElasticSearch6.5.0版本的

C FileInfo的簡單操作

                     和DirectoryInfo一樣,FileInfo類同樣是很方便的就能實現複雜的功能。 如下,我們一起來看一下一個簡單的小例子吧。using System;using System.Collections.Generic;using System.Linq;using

pythonNumpy庫簡單操作

   在windows中,Numpy安裝與其他庫一樣,可通過pip install numpy安裝,也可以自行下載原始碼,然後用pip install 路徑+檔名全稱(包括.字尾檔名)進行安裝,原始碼

golang-redislist型別簡單操作

1:安裝redigo go get github.com/garyburd/redigo/redis 2:連線redis(通過ip埠) import ( "github.com/garyburd/redigo/redis" ) c, err

pythonscipy庫簡單操作

Scipy提供了真正的矩陣,以及大量基於矩陣運算的物件與函式,功能包含最優化,線性代數,積分,插值,擬合,特殊函式,快速傅立葉變換,訊號處理和影象處理,常微分方程求解等,Scipy依賴於Numpy庫,因此安裝Scipy時應先安裝Numpy庫,Scipy安裝與其他庫一樣,可通

golang-redisstring型別簡單操作

1:安裝redigo go get github.com/garyburd/redigo/redis 2:連線redis(通過ip埠) c, err := redis.Dial("tcp", "192.168.2.225:6379") if err

Redis入門很簡單二【常見操作命令】

哈希表 shu 分享 排序。 sca ann mongodb pin set Redis入門很簡單之二【常見操作命令】 博客分類: NoSQL/Redis/MongoDB redisnosql緩存 Redis提供了豐富的命令,允許我們連接客戶端對其進行直接

Linux命令簡單操作sed

es2017 字符串 選項 常用 images sed 匹配 lena options sed sed語法格式: sed[options ]‘command’ file(s) sed常用選項: -n:只有經過sed 特殊處理的那一行(或者動作)才會被列出來

Linux命令簡單操作awk

del cond name pattern 替換 linu 一個 pla mman awk 命令格式: awk ‘BEGIN{commands} pattern {commands} END{commands}’file 工作方式: 1.執行BEGIN{co

大數據開發學習hbase命令的簡單操作

數據 小白 hba name isa 出現 base 相同 大牛 小課堂之hbase命令的簡單操作 1、創建一張表 create 表名,列族名 create ‘t0‘,‘cf01‘ --把單引號去掉? undefined local variable or method `

linux簡單操作復制 vim裏面的搜索

輸入 onf 配置文件 一個 問題 回車 開始 linux 跳轉 =================================linux vim 復制============================1、復制1)單行復制在命令模式下,將光標移動到將要復制的行處,

Docker學習二:Docker基本簡單操作命令

查詢tomcat映象; docker search tomcat 進入容器 docker exec -it 458(容器ID) /bin/bash 檢視容器完整id docker inspect 14b7 | grep Id 上傳war包到docker docker te

Node學習基礎(四)檔案的流操作以及pipe管道簡單舉例

 舉例說明: // 1.引入模組 let fs =require('fs'); //2.建立讀入流 let rs = fs.createReadStream('D:/Pictures/Saved Pictures/testSP.mp4'); //要讀取視訊的位置 let ws

CSS3opacity屬性簡單使用

什麼是opacity? opacity 屬性設定元素的不透明級別。   怎麼使用? <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

zookeeper 簡單操作

ZooKeeper的資料模型及其API支援以下九個基本操作: 我們來使用ZooKeeper Java shell對上面中提到的ZooKeeper操作進行演示: 用ThisIsTheRootNode作為資料建立一個名為root的znode: [zk: localhost(CONN

MongoDB學習03JAVA簡單操作增刪改查

       經過前面幾篇博文的學習,對MongoDB已經有一定的瞭解了,現在用JAVA來操作MongoDB,進行一些簡單的增刪改查,查詢有複雜查詢,這裡不一一列舉,同學自己看看API就OK了。       MongoDB JAVA驅動下載:https://github.c

PythonPillow進行簡單的影象操作

顏色與RGBA值 計算機通常將影象表示為RGB值,或者再加上alpha值(通透度,透明度),稱為RGBA值。在Pillow中,RGBA的值表示為由4個整陣列成的元組,分別是R、G、B、A。整數的範圍0~255。RGB全0就可以表示黑色,全255代表黑色。可以猜測(255, 0, 0, 255)代

資料結構 佇列(Queue)的實現及簡單操作

在生活中我們經常會遇到排隊的事情,比如說排隊買東西,大家依次站一個隊,隊頭的人要比後面的人先買到東西,先到先得,然後買完東西就會離開這個隊 而我們平時為了解決在比如說打客服電話,排隊叫號之類的應用問題時我們就應用了 佇列 這種資料結構,實現先到先得,先入先出的排隊功能

STM32學習:GPIO最簡單操作步驟

需用到的".c"庫函式為 stm32f10x_gpio.c 和stm32f10x_rcc.c   1.  啟動相應Port x的RCC(復位始終控制)     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE);