私は、postgres 9.4とjsonbタイプを使用しています。WHERE句の一部として配列オブジェクトをチェックします。
CREATE TABLE jsonb_test (iid serial NOT NULL, data jsonb)
そしてそのテーブルに次のJSONデータ:私は、次の表持って私がやりたい何
{"date": "2016-01-01T00:00:00.000Z", "items": [{"name": "bottles", "price": 12}, {"name": "caps", "price": 20}], "customer": {"name": "Customer 1", "email": "[email protected]"}}
{"date": "2015-12-01T00:00:00.000Z", "items": [{"name": "bottles", "price": 1}, {"name": "caps", "price": 50}], "customer": {"name": "Customer 2", "email": "[email protected]"}}
は価格でアイテムを持っているすべての行を取得することですが30より大きいこの場合、顧客2行が返されます。
これは、これまでのところ、私のクエリです:
SELECT * FROM jsonb_test WHERE jsonb_array_elements(jsonb_extract_path(data, 'items')) #> '{price}' > '0'
しかし、これはエラーERROR: argument of WHERE must not return a set
で失敗する誰もがこれを行う方法を教えてもらえますか?任意のレベルのネストに対してこれを行うことは可能ですか?
ありがとうございます!
あなたは[?なぜ私はjsonb_array_elementsに直接照会することはできません]読みました(http://stackoverflow.com/questions/30687945/why-cant-i-query-directly -on-jsonb-array-elements) – abarisone
@abarisone私はそれを見ました。私には分かりませんでした。 – shortspider