【问题标题】:Sequelize operators conditional countSequelize 运算符条件计数
【发布时间】:2021-12-07 20:14:03
【问题描述】:

我的问题是如何为条件计数编写查询。我的 Postgres 表上有一组这样的对象,即 jsonb

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

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

【问题讨论】:

    标签: javascript node.js postgresql sequelize.js


    【解决方案1】:

    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
    

    【讨论】:

    • 感谢您的回答。但是我需要用 sequelize 操作符你有什么想法吗?
    • 我认为可以在 java 语句中嵌入 sql 查询,但我无法帮助/建议您在 sequelize 中如何做到这一点,抱歉。
    猜你喜欢
    • 2017-12-03
    • 2013-03-22
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2013-06-03
    相关资源
    最近更新 更多