Sequelize 在 JSON 数组字段 Postgresql 中查找

Sequelize find in JSON array field Postgresql

我的 PostgreSQL 数据库的 JSONB 类型字段名为“元数据”,具有以下内容结构:

row1: {   
"name": "test",   
"description": "test",   
"attributes" : [      {        "type": "level" ,       "level": 1      },      {        "type": "name"    ,    "name": "Fish"      }   ] 
}

row2: {   
"name": "test2",   
"description": "test2",   
"attributes" : [      {        "type": "level",        "level": 4      },      {        "type": "name"  ,      "name": "Cat"      }   ] 
}

row3: {   
"name": "test4",   
"description": "test4",   
"attributes" : [      {        "type": "level",        "level": 7      },      {        "type": "name"    ,    "name": "Dog"      }   ] }

我尝试使用 Sequelize 在 [1, 5] 之间通过 attributes.level 筛选器发出 findAll 查询请求,但没有得到一些结果。如何在 json 数组之间找到?

这里是参数化查询。 :lo:hi 是参数。 the_table CTE代表真实table作为说明。

with the_table(r, metadata) as 
(
 values
 ('row1', '{"name": "test",  "description": "test",  "attributes" : [ { "type": "level" , "level": 1}, { "type": "name" , "name": "Fish" }]}'::jsonb),
 ('row2', '{"name": "test2", "description": "test2", "attributes" : [ { "type": "level", "level": 4 }, { "type": "name" , "name": "Cat" }]}'),
 ('row3', '{"name": "test4", "description": "test4", "attributes" : [ { "type": "level", "level": 7 }, { "type": "name" , "name": "Dog" }]}')
)
select * from the_table
where exists 
(
  select from jsonb_array_elements(metadata -> 'attributes') e 
  where (e ->> 'level')::numeric between :lo and :hi
);