在postgresql jsonb列中查询内部字段

问题描述

我有一个jsonb列,其结构如下:

@H_502_2@{ .....other fields,"a" : { "b" : { "c" : "some value",....other fields } .....other fields },...other fields }

我可以这样查询属性是表MyTable中的列名:

@H_502_2@SELECT * from MyTable t WHERE t.properties @> '{"a":{"b":{"c": "some value"}}}';

但是“ c”之前的字段可能会有所不同,即我们可以拥有:

@H_502_2@{ .....other fields,"m" : { "n" : { "c" : "some value",....other fields } .....other fields },...other fields }

如何针对这种情况修改查询

解决方法

如果嵌套始终处于同一级别,则可以使用JSON / Path表达式:

location ^~ /membership/plans {
 if ($request_uri ~* "mem_redirect_flow=1"){
     set $memcheck 1;
 }
 if ($request_uri ~* "mem_redirect_flow=2"){
     set $memcheck 1;
 }
 if ($request_uri ~* "mem_redirect_flow=3"){
     set $memcheck 1;
 }
 if ($request_uri ~* "mem_redirect_flow=4"){
     set $memcheck 1;
 }
  .....
}