使用动态值按键查询Postgres JSONB列

时间:2017-05-22 06:49:43

标签: ruby-on-rails postgresql jsonb

我的模型UserPost包含JSONB列posts,其中存储的数据将是JSON,其中user_id为关键字(动态),某些属性为值。考虑到我有多个user_posts记录,如下所示,

记录1:

 id: 1
 posts: { 
          1: { message: 'some', posted_at: 'sometime', attachment_url: 'some_url' },
          3: { message: 'some', posted_at: 'sometime', attachment_url: 'some_url' }
        }

记录2:

 id: 2
 posts: { 
   { 
      2: { message: 'some', posted_at: 'sometime', attachment_url: 'some_url' },
      5: { message: 'some', posted_at: 'sometime', attachment_url: 'some_url' }
    }

记录3:

id: 3
 posts: { 
   { 
      1: { message: 'some', posted_at: 'sometime', attachment_url: 'some_url' },
      2: { message: 'some', posted_at: 'sometime', attachment_url: 'some_url' }
    }

user_ids2, 5,必须提取UserPost条记录,我该怎么做?

1 个答案:

答案 0 :(得分:0)

找到它,

单键:

UserPost.where("posts ? '2'")

键数组:

UserPost.where('posts ?| array[:keys]', keys: ['1', '2'])