簡體   English   中英

Rails Postgres過濾jsonb數組中的jsonb對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM