【发布时间】:2021-11-15 10:18:08
【问题描述】:
我在 MySQL 数据库中有一个带有 json 类型的字段。该字段包含诸如
{
"city_eq": "NewYork",
"rent_true": false,
"estate_type_eq": 0
}
通过传入哈希搜索记录的正确方法是什么?像这样:
Link.where(json_fields: {
"city_eq": "NewYork",
"rent_true": false,
"estate_type_eq": 0
})
只有当所有值都相同并显示在字段中时,查询才应返回记录。哈希键的顺序可能不同。
【问题讨论】:
-
您需要检查数据库的文档并使用 SQL 字符串。 ActiveRecord 不会自动从散列创建对 JSON/JSONB 等类型的查询。或者您可以重新考虑是否真的想使用 JSON 列而不是表...
-
@max 可以使用原始sql
-
是的。如果您无法使用 ActiveRecord 查询接口创建给定查询,请使用 SQL 字符串或 Arel。查询接口适用于大多数简单查询,但不涵盖数据库特定功能,例如未标准化的 JSON 列。
-
@max 我的意思是从 AA 切换到原始 SQL 并不是什么大问题。问题是我无法构建正确的 SQL :)
标签: mysql sql ruby-on-rails mysql-json