[英]How to transform dynamic query parameter object to Sequelize Operators (Javascript Symbols)
[英]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.