Rails查询包含json对象数组的jsonb字段

时间:2019-02-05 13:23:58

标签: ruby-on-rails jsonb

我有一个jsonb列occurrences,其中包含以下

[{"occurs_on"=>"2019-02-04 23:00:00 UTC", "status"=>"none"}, 
{"occurs_on"=>"2019-02-05 23:00:00 UTC", "status"=>"none"}]

我想做的是获取(日期时间字符串的)日期部分等于2019-02-04的元素,因此为此使用LIKE

Event.where("events.occurrences ->> :key LIKE :value", 
:key => 'occurs_on', :value => '2019-02-04%')

这将返回一个空集合,并且不确定为什么找不到该元素

更新

我尝试了类似的方法

sql = <<-HEREDOC
   SELECT  * FROM events WHERE ('{"status": "none"}' <@ ANY (ARRAY(select jsonb_array_elements(occurrences)))) LIMIT 1
HEREDOC

 result = ActiveRecord::Base.connection.execute(sql)

它有效,但是如果我将sql更改为

SELECT  * FROM events WHERE ('occurrences->"occurs_on" LIKE "2019-02-04"' <@ ANY (ARRAY(select jsonb_array_elements(occurrences)))) LIMIT 1

它引发错误!

有人知道在这种情况下如何正确使用LIKE吗?

0 个答案:

没有答案