首页 > 解决方案 > 在 jsonb 字段中加入搜索查询

问题描述

我有桌子GroupItems和桌子Groups。Groups 有一个jsonb名为 的列类型lms_data。我想在name里面的字段上搜索lms_data。我正在使用 gem administrate 来帮助您创建具有搜索功能的仪表板。在您的仪表板中,您可以使用搜索配置声明一个字段:

group: Field::BelongsTo.with_options(
      searchable: true,
      searchable_fields: ["lms_data->>'name'"]
),

然后在搜索 gem 将动态构建查询,这里它构建:

"SELECT \"group_items\".* FROM \"group_items\" LEFT OUTER JOIN \"groups\" ON \"groups\".\"account_id\" = 4 AND \"groups\".\"id\" = \"group_items\".\"group_id\" WHERE \"group_items\".\"account_id\" = 4 AND (LOWER(CAST(\"groups\".\"lms_data->>'name'\" AS CHAR(256))) LIKE '%adv%')"

但是,这会引发错误:

PG::UndefinedColumn: ERROR:  column groups.lms_data->>'name' does not exist
LINE 1: ...E "group_items"."account_id" = $2 AND (LOWER(CAST("groups"."..

在连接组表中查询 lms_data->>'name' 的正确语法是什么?

标签: rubypostgresqljsonbadministrate

解决方案


推荐阅读