Postgresql Jsonb字段内含数组属性的删除元素操作

1.创建示例表

create temp table settings as
select
    ‘{"west": [
      {"id": "aa92f346-7a93-4443-949b-4eab0badd983", "version": 1},
      {"id": "cd92e346-6b04-3456-050a-5eeb0bddd027", "version": 3}
    ]}‘::jsonb as value;

2.如下保留version=1的数据, 如果把where (j->>‘version‘)::int = 1改为where (j->>‘version‘)::int <> 1 则进行删除操作

update settings set value = jsonb_set(value, ‘{west}‘, jsonb_build_array(ARRAY(select j from
(SELECT jsonb_array_elements(value->‘west‘) j from settings ) as b
where (j->>‘version‘)::int = 1)))

参考资料:

http://stackoverflow.com/questions/38640168/find-position-of-object-in-postgres-jsonb-array

http://dba.stackexchange.com/questions/54283/how-to-turn-json-array-into-postgres-array

时间: 2024-11-06 01:46:36

Postgresql Jsonb字段内含数组属性的删除元素操作的相关文章

js数组依据下标删除元素

最近在项目中遇到了一些问题,基础性的东西记得不牢固,就总结一下放在这里备再次查找,对操作js数组的一些问题一些常用的记录! 1.创建数组 var array = new Array(); var array = new Array(size);//指定数组的长度 var array = new Array(item1,item2……itemN);//创建数组并赋值 2.取值.赋值 var item = array[index];//获取指定元素的值 array[index] = value;//

php 数组 添加元素、删除元素

拆分数组 PHP数组添加一个元素的方式: push(), arr[], Php代码 $arr = array(); array_push($arr, el1, el2 ... eln); 但其实有一种更直接方便的做法: Php代码 $arr = array(); $arr[] = el1; $arr[] = el2; ... $arr[] = eln; 而且有实验证明,第二种方法的效率比第一种方法高出将近一倍! 我们来看下面的例子: Php代码 $t = microtime(true); $ar

JS根据数组下表删除元素

//新增根据数组下表remove元素方法 Array.prototype.remove = function(obj){ for(var i=0;i<this.length;i++){ var temp = this[i]; if(!isNaN(obj)){ temp=i; } if(temp == obj){ for(var j=i ;j<length;j++){ this[j] = this[J+1]; } this.length = this.length-1 ; } } }

python3_列表(修改,添加和删除元素操作)

前言:列表的定义:列表是由一系列按特定顺序排列的元素组成.即列表是一个有序集合. 1.修改列表元素 由前言知列表是一个有序集合,因此在修改列表元素时我们需指定列表名和要修改的元素的索引,再指定该元素的新值. 例如,假设有一个人名列表,其中第一个人叫'xiaohong',如何修改他的值呢? names = ['xiaohong', 'Eric', 'Lily'] print(names) names[0] = 'xiaoming' print(names) 上述代码中,我们首先定义了一个人名列表,

关于数组增加和删除元素的四种方法

一.向数组最后面添加一个或多个元素 语法:arr.push(ele1,ele2,....); 该方法会返回一个新的数组长度,并且改变原来数组里面的元素 1 var arr=[1,2,3,4,5]; 2 console.log(arr.push(6)); //返回一个新的长度length=6; 3 console.log(arr);//[1,2,3,4,5,6] //会改变原来数组里面的元素 二.向数组最前面添加一个或多个元素 语法:arr.unshift(ele1,ele2,.....); 该方

js 按元素向数组中最佳删除元素

追加::: var a = [];// 创建数组 a.push(1); // 添加到最后 a.unshift(); // 添加到第一个位置 删除:::如果你没有使用第三方框架,有类似的扩展功能可以根据指定值,返回元素的下标的话,只能自己先查找,然后再删除. <script type="text/javascript"> Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length;

OC 之字典/数组混合使用(删除元素 描述器排序)

注:字典在数组内排序用描述器排序,遍历用字典对象输出!!!!!! NSArray *[email protected][@{@"name":@"Tim Cook",@"age":@"24",@"sex":@"female",@"score":@"89"},@{@"name":@"Jony Ive",@&quo

MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))

目录 一.前言 (一) 运行环境 二.前期准备工作 (一) 创建 MongoDBContext MongoDb操作上下文类 (二)创建测试类 (三) 创建测试代码 三.内嵌数组增加元素操作 (一) Update.Set()方法 替换内嵌数组(不推荐使用) (二)Update.Push()方法 直接将元素压入内嵌数组(推荐) (三) Update.PushEach()方法 将多个元素压入内嵌数组(推荐) 四.内嵌数组删除元素操作 (一) Update.Set()方法 替换内嵌数组(不推荐使用) (

1116 删除元素

题目来源:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1116Description输入一个递增有序的整型数组A有n个元素,删除下标为i的元素,使其仍保持连续有序.注意,有效下标从0开始. 定义如下两个函数分别实现删除元素操作和数组输出操作.void del(int a[], int n, int i);  /*删除数组a中下标为i的元素*/void PrintArr(int a[], int n); /*输出数组a的前n个元素*/ Inpu