在postgresql jsonb列中查询内部字段

问题描述

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

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

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

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

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

{
        .....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;
 }
  .....
}