Ruby on rails JSONB查询数组
我在PostgreSQL表中有一列,该列有一个JSONB字段,其中包含如下数据:Ruby on rails JSONB查询数组,ruby-on-rails,ruby,database,postgresql,Ruby On Rails,Ruby,Database,Postgresql,我在PostgreSQL表中有一列,该列有一个JSONB字段,其中包含如下数据: [{"id":33,"url":"","name":"test"}, {"id":45,"url":"","name":"test"}] 我试图查询它并返回与id匹配的元素。我在Rails中有以下查询,但它似乎不匹配
[{"id":33,"url":"","name":"test"}, {"id":45,"url":"","name":"test"}]
我试图查询它并返回与id匹配的元素。我在Rails中有以下查询,但它似乎不匹配:
Book.where('data@>?','[{“id”:33}]')由于您只需要jsonb数组中的一些元素,因此需要将这些元素转换为记录并与其父元素交叉连接:
Book.joins(", jsonb_array_elements(books.data) obj")
.where("obj->>'id' = '33'")
.select("obj")
由于您只需要jsonb数组中的一些元素,因此需要将这些元素转换为记录并与其父元素交叉连接:
Book.joins(", jsonb_array_elements(books.data) obj")
.where("obj->>'id' = '33'")
.select("obj")
查询的预期返回结果是什么?@DanielSindrestean,我希望它返回基于id等于33的匹配数组元素。因此,它应该返回
{“id”:33,“url”:“name”:“test”}
下面的答案是否解决了您的问题?查询的预期返回结果是什么?@DanielSindrestean,我希望它返回基于id等于33的匹配数组元素。因此,它应该返回{“id”:33,“url”:“name”:“test”}
下面的答案是否解决了您的问题?