繁体   English   中英

在 object 键上的 Sequelize 运算符

[英]Sequelize operators on object keys

我的数据库中有 jsonb object,它有一个“类型”嵌套 object,键为 bbox 和 ellipse,但“类型”可以为空,也可以只包含 bbox 或椭圆,或同时包含两者。 我需要编写一些这样的查询来查找带有 bbox 或椭圆的行。

instancesMetadata: {
                        types: {
                            [Sequelize.Op.or]: [
                                {
                                    bbox: {
                                        [Sequelize.Op.gte]: 1,
                                    }
                                },
                                {
                                    ellipse: {
                                        [Sequelize.Op.gte]: 1,
                                    }
                                }
                            ],
                        }
                    }

我的第二个问题是如何编写条件计数查询。 我在同一个 jsonb 上有这样的对象数组

"instances": [
    {
        "type": "bbox",
    },
    {
        "type": "bbox",
    },
    {
        "type": "bbox",
    },
    {
        "type": "ellipse"
    }
]

我必须找到行数,例如,在实例数组中有两个以上类型等于 boxx 的对象,但使用 sequelize 运算符

sql解决方案

“我需要编写一些这样的查询来查找带有 bbox 或椭圆的行”

SELECT *
  FROM your_table AS t
 WHERE jsonb_path_exist(t.your_json_column :: jsonb, '$.**.keyvalue() ? (exists(@.key == 'bbox' || @.key == 'ellipse'))')

“我必须找到行数,例如,在实例数组中有两个以上类型等于 bbox 的对象”

SELECT count(*)
  FROM your_table AS t
 CROSS JOIN LATERAL
     ( SELECT count(*) AS count
         FROM jsonb_path_query(t.your_json_column :: jsonb, '$[*] ? (@.type == "bbox")')
     ) AS c
 WHERE c.count > 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM