【发布时间】:2021-01-01 17:54:20
【问题描述】:
我有以下关于 Note 模型的数据集。目前,我正在使用 Postgres 作为数据库。下面是Notes 表上的两条不同记录。
id: 1,
name: 'First Note',
items: [{description: 'First Note'}, {description: 'PM1 Second Note'}]
id: 2,
name: 'Second Note',
items: [{description: 'Second Note'}, {description: 'PM2 Second Note'}]
id: 3,
name: 'Third Note',
items: [{description: 'Third Note'}, {description: 'Invalid Second Note'}]
我如何查询json 字段(项目),以便我在描述字段上获得值PM 的所有注释,即查询应返回上例中id 为1 和2 的注释?
【问题讨论】:
-
很不清楚你在这里问什么。我们是在谈论存储在数据库中的数据吗?什么rdbms?这是本机 JSON/JSONB 列还是您将序列化与 varchar 列一起使用?请提供架构描述和实际所需输出的示例。
-
见Postgresql query array of objects in JSONB field。 ActiveRecord 没有任何用于查询 JSON 列的内置方法,因此您需要编写 SQL 字符串。这将是一个复杂的查询,因为您不能只使用
@>中内置的 Postgres,包括带有like/ilike的运算符。如果它在我那里我会考虑创建一个单独的表而不是使用 JSON 列,因为这样可以让您编写一个更简单的连接查询并使用索引。
标签: ruby-on-rails activerecord