带jsonb列和非jsonb列的红字倍数运算符

问题描述 投票:1回答:1

我正在尝试进行一个包含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)

这有效。出于某种原因,我在单独的方法中使用了“> @”,但并未对此进行组合。现在都在工作。感谢您的支持

ruby-on-rails rails-activerecord where-clause jsonb
1个回答
0
投票

答案是在对jsonb列的查询中包括'> @'

Channel.where("options @> ? AND platform_id = ? AND updated_at > ?", {valid_account: true}.to_json, 2, 7.days.ago
© www.soinside.com 2019 - 2024. All rights reserved.