Ruby on rails Rails-Postgres-jsonb列查询

Ruby on rails Rails-Postgres-jsonb列查询,ruby-on-rails,ruby,postgresql,jsonb,Ruby On Rails,Ruby,Postgresql,Jsonb,我有一个名为“可用数量”的jsonb列。其中将包含样本值 { "100": 50, "1000":10 } 现在,我想查询所有值小于50的键 我试过这个问题 Bundle.where('available_quantity @> ?', {'100': 5}.to_json) 但是这个给了我所有包含{100:5}的可用数量的包 我该怎么做?这可能吗 您可以使用->操作符: Bundle.where("(available_quantity->>'100')::int <

我有一个名为“可用数量”的jsonb列。其中将包含样本值

{ "100": 50, "1000":10 }
现在,我想查询所有值小于50的键

我试过这个问题

Bundle.where('available_quantity @> ?', {'100': 5}.to_json)
但是这个给了我所有包含{100:5}的可用数量的包


我该怎么做?这可能吗

您可以使用
->
操作符:

Bundle.where("(available_quantity->>'100')::int < 50")
Bundle.where(“(可用数量->>'100”)::int<50”)

请看这里。我想你的钥匙应该有一个名字,但是有多个名字values@Joel_Blum是的,如果我有钥匙,那很容易。但是正在寻找一种利用现有数据库结构的方法。你说“利用现有数据库结构”是什么意思?@SuganyaSelvarajan比Rails更像是一个postgres问题,我不认为这是可能的though@sebastian_palma,这真让人恼火。但是我想得到所有键的值小于50的行。这里有可能给出多个键吗?Bundle.where(“((available\u quantity->'100,50”)::int<50”)?我想你可以,但你必须添加一个
操作符,
available\u quantity->'100,50'
无效,除非你有相同的JSON键。好的,我已经更新了JSON以存储为数组。样本:可用数量:[{“面额”=>“1000”,“数量”=>19},{“面额”=>“5000”,“数量”=>20}]。现在我的查询看起来像Bundle.where(((available_quantity->'quantity')::int<50)。但它返回空关系。这是一个新的不同错误。请随意创建一个新问题@SuganyaSelvarajan。