[英]Rails Postgres filtering for a jsonb object inside of a jsonb array
假設我有一個模型Neighborhood
,它有一個jsonb []字段families
,這是一個包含json對象的數組,其中任何類型的鍵值配對都是這樣的[{"name":"Smiths", "count":4}, {"name":"Miller","out_on_vacation":false}, {"name":"Bennet", "house_color":"red", "count": 4}]
我想做一個activerecord查詢來查找在其families
數組中包含某些對象的鄰域。 因此,如果我執行了像Neighborhood.where({families: {count: 4})
,結果將是任何鄰域模型,其族字段包含一個jsonb對象,其鍵值配對為count: 4
。 我玩了很多不同的查詢,但似乎無法讓任何一個查詢工作而不會收到錯誤。 我如何編寫Activerecord查詢以獲得所需的結果?
編輯:我像這樣進行了遷移:
def change
add_column :neighborhoods, :families, :jsonb, array: true, default: [], index: true
end
我相信你會這樣做:
Neighborhood.where("families -> 'count' ? 4")
本文可能對您有所幫助: http : //nandovieira.com/using-postgresql-and-jsonb-with-ruby-on-rails
編輯:剛剛注意到你在jsonb里面有一個數組,所以這可能不起作用。
編輯2:這在Reddit上得到了解答,也為我工作。 在這里回答作為我自己的參考。
Neighborhood.where %q(families @> '[{"count":?}]'), 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.