我有一個具有JSONB列content
的Page
模型的Rails 5項目。因此,結構看起來像這樣(降低到最低限度的問題):在Rails中的JSONB查詢包含哈希數組的鍵
#<Page id: 46, content: {..., "media" => [{ "resource_id" => 143, "other_key" => "value", ...}, ...], ...}>
我將如何編寫一個查詢發現,有一些所需數量的resource_id
的content
JSONB的media
鍵下的所有網頁柱?這是我做了一個不起作用的嘗試(我認爲是因爲在陣列的每個項目中還有其他鍵/值對): Page.where("content -> 'media' @> ?", {resource_id: '143'}.to_json)
編輯:這個工作,但只會檢查第一個哈希媒體數組:Page.where("content -> 'media' -> 0 ->> 'resource_id' = ?", '143')
謝謝,這是非常有幫助的。使用Rails而不是直接SQL,我編寫了這個查詢,它給了我所需要的: 'Page.where(「'{\」resource_id \「:?}'<@ ANY(ARRAY(select jsonb_array_elements(content - >) 'media')))「,143)' – Lee