1
私のRails 5アプリケーションでは、問い合わせ方法がわからないjsonbフィールド(properties
)を使用するAhoy gemを使用しています。Rails - JSONフィールドのクエリ
properties
フィールド内のデータのサンプル:私は何をしようとしている
"{\"id\":\"11\"}"
は次のとおりです。
time
フィールドを使用して(過去7日間に作成されたレコードを探します)properties
フィールドにid
のレコードをグループ化する- wh ICH
id
は、ほとんどのレコードを
私はこの試みた持っていた:私は宝石のための問題で、このsomewhat similar questionを見つけ
PG::UndefinedColumn: ERROR: column "properties(id)" doe not exist
@foo = Ahoy::Event.where(name: "Viewed Product").where(time: 7.days.ago..Time.now).group("properties(id)").order('COUNT("properties(id)") DESC')
をしかし、私はエラーを受け取ったが、ので、私は壊してみました部品へのクエリ:
@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
。
私が間違っていることを誰かに教えてもらえますか?
はい、私はそれを言及する記事を見ました。私が試みたときに 'PG :: GroupingError:ERROR:column" ahoy_events.id "がGROUP BY句に現われなければならないか、集約関数で使用されなければならないでしょう。 – yellowreign
それは分かります。詳細は、このリンク(http://bernardoamc.github.io/sql/2015/05/04/group-by-non-aggregate-columns/)を参照してください。ユースケースごとにクエリを変更することができます。しかし、いずれの場合でも、jsonbカラムでクエリを実行する場合は、 '' '' properties - >> 'id''''を使う必要があります。 –