Ruby on rails Rails-Postgres-jsonb列查询
我有一个名为“可用数量”的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 <
{ "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。