Rails - 查询JSON字段

时间:2017-03-01 04:34:59

标签: ruby-on-rails json ruby ahoy

在我的Rails 5应用程序中,我使用Ahoy gem,它使用了一个我不知道如何查询的jsonb字段(称为properties)。

properties字段中的数据示例:

"{\"id\":\"11\"}"

我要做的是:

  1. 查找过去七天内创建的记录(使用time字段)
  2. id字段
  3. 中的properties对记录进行分组
  4. 根据id记录最多的记录
  5. 订购记录

    我试过了:

    @foo = Ahoy::Event.where(name: "Viewed Product").where(time: 7.days.ago..Time.now).group("properties(id)").order('COUNT("properties(id)") DESC')
    

    但我收到错误PG::UndefinedColumn: ERROR: column "properties(id)" doe not exist

    我在gem的问题中找到了这个somewhat similar question,所以我尝试将查询分成几部分:

    @foo = Ahoy::Event.where(name: "Viewed Product").where(time: 7.days.ago..Time.now)
    @foo.group("properties REGEXP '[{,]\"id\"...).count
    

    但是我的IDE提供了错误unterminated string meets the end of file

    有人可以帮我确定我做错了吗?

1 个答案:

答案 0 :(得分:0)

如果你正在使用PostgreSQL,我相信你必须像这样引用json列: .group("properties ->> 'id'")