首页 > 解决方案 > 在嵌套的 Postgresql JSONB 列中搜索

问题描述

如何在 Rails 的嵌套 jsonb 列中进行搜索。

Model: Shop
jsonb column: shop_data

shop_data: {
  common_data: {
    "image_url" => "https://sample.com/img.jpg"
    "token" => "AOsa2123ASDasdaasasda"
    "uid" => ""
    "expires_at" => ""
  }
}

想要制作一个检查记录的范围:

1. shop_data->common_data->expires_at IS NOT NULL
2. shop_data->common_data->image_url IS NULL

标签: ruby-on-railsrubypostgresqljsonb

解决方案


 1. scope :expired, -> { where("shop_data -> 'common_data' ->> 'expires_at' IS NOT NULL") }
 2. scope :null_image, -> { where("shop_data -> 'common_data' ->> 'image_url' IS NULL") }

postgres 中的源JSON 函数

希望能帮助到你


推荐阅读