ruby-on-rails - 使用 Active Record 查询 json 数组 (Rails 4/postgresql9.4)

标签 ruby-on-rails json postgresql rails-postgresql jsonb

我有一个交易模型,它有一个名为“信息”的属性,结构如下:

在交易的“信息”栏内:

Deal1.info = [{"deal_id":"4","text1":"qqq","text2":"sqsq","image1":"sqqs","video1":"sqsq"},{"deal_id":"5","text1":"sqqs","text2":"qq"}]

# no image here inside the json
Deal2.info = 
[{"deal_id":"4","text1":"qqq","video1":"sqsq"},{"deal_id":"5","text1":"sqqs","text2":"qq"}]

该列在 mligration 中定义为 json

add_column :deals, :info, :json, default: '[]'

如何在 jsonb 中使用事件记录查询?

  • 查找信息至少包含一个 deal_id = 4 的所有交易

  • 找到所有信息至少包含一个 json block ({ }) 并带有名为“image1”的键(它应该只输出 Deal1,而不输出 deal2)的所有交易

最佳答案

我有一个类似的列,我不得不将列类型从 json 更改为 jsonb

add_column :deals, :info, :jsonb, default: [], null: false, index: true

在将数据类型设置为 jsonb 之后,我能够执行这种类型的 activerecord 查询。

Info.where('deals @> ?', '[{"deal_id":"4"}]')

我不太确定如何使用 activerecord ( http://www.postgresql.org/docs/9.4/static/functions-json.html#FUNCTIONS-JSONB-OP-TABLE ) 编写所有这些来实现您的第二个要点。

关于ruby-on-rails - 使用 Active Record 查询 json 数组 (Rails 4/postgresql9.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31462559/

相关文章:

html - 分层结构中绘制连接器的非图像解决方案

用于创建插入脚本的 SQL 脚本

java - Jackson:如何生成拒绝所有其他内容的 json 模式

.net - 通用 WCF JSON 反序列化

postgresql - 如何使用 psql 连接到 RDS Postgres 实例

在 Windows 上使用 shp2pgsql.exe 将 shapefile 提取到 PostgreSQL/PostGIS 数据库中的 Python 脚本

JavaScript 未在 Rails 测试环境中加载

ruby-on-rails - stub 方法在before_create回调中返回nil

javascript - 选择文件后显示图像文件名(web)

python - 如何在Python中处理JSON文件中的字节字段?