pgSQL中的jsonb是用来存储json字段的一个数据类型
然鹅有些时候,如果我们需要对json数组中的一个元素中的字段进行条件查询,这个时候应该怎么办?
{list: [{field:1},{field:2} ] }
例如上例:我想要查询表中所有记录下,对应上述jsonb类型的json字段中,list对应的列表下,field为1的记录
这个时候可以使用到jsonb提供的一个数组函数
SELECT count(*) FROM table WHERE table.column in ( SELECT * FROM jsonb_array_elements(column->'list') AS elem WHERE elem ->> 'field' = '1' );
我们通过jsonb_array_elements这个函数可以将参数中指定的json数组进行元素提取,把它们提取出来作为一个一维列表并可以对里面的每一个元素进行条件查询
上述sql的子查询表达的就是对column这列中的json字段中,key为list的json列表进行筛选,要求里面的每一个元素的field对应的值必须为1的记录