我正在尝试进行一个包含jsonb列和2个非jsonb列的查询。
多次尝试组合它们均失败了,但是当我仅使用其他1个非jsonb列时,几乎有1种有效。我有一个带有“选项”存储和其中几个属性的通道模型。
如果我分开查询,它们可以正常工作,但是结合起来,它们将检索一个空数组。我已经确保,如果查询确实起作用,则肯定有数据可以返回。
非jsonb列-作品
Channel.where("platform_id = ? AND updated_at < ?",2,7.days.ago)
jsonb专栏-作品
Channel.where("options @> ?", {valid_account: true}.to_json)
结合运算符-返回空[]
Channel.where("platform_id = ? AND updated_at < ?",2,7.days.ago).where("options @> ?", {valid_account: true}.to_json)
1带组合查询的运算符-再次返回空[]
Channel.where("options = ? AND platform_id = ? AND updated_at < ?", {"valid_account" => true}.to_json, 2, 7.days.ago)
现在不知所措,不知道如何将所有内容纳入一个查询...或者甚至有可能。
再次...肯定有应该通过上述给定查询返回的频道
TIA
UPDATE
已设法使查询生效。尝试了几乎所有组合,但错过了一个关键组合。
Channel.where("options @> ? AND platform_id = ? AND updated_at > ?", {valid_account: true}.to_json, 2, 7.days.ago)
这有效。出于某种原因,我在单独的方法中使用了“> @”,但并未对此进行组合。现在都在工作。感谢您的支持
答案是在对jsonb列的查询中包括'> @'
Channel.where("options @> ? AND platform_id = ? AND updated_at > ?", {valid_account: true}.to_json, 2, 7.days.ago